2015-06-19 134 views
1

我使用的是paramiko的rforward.py演示脚本,演示了如何反向SSH隧道的工作原理。该代码包含以下行:
transport.request_port_forward('', server_port)paramiko.ssh_exception.SSHException:TCP转发请求被拒绝

当我运行这段代码,我得到以下错误:

Traceback (most recent call last): 
    File "C:\Users\Name\Documents\bh_python\rforward.py", line 167, in <modul 
e> 
    main() 
    File "C:\Users\Name\Documents\bh_python\rforward.py", line 160, in main 
    reverse_forward_tunnel(options.port, remote[0], remote[1], client.get_transp 
ort()) 
    File "C:\Users\Name\Documents\bh_python\rforward.py", line 73, in reverse 
_forward_tunnel 
    transport.request_port_forward('', server_port) 
    File "build\bdist.win32\egg\paramiko\transport.py", line 775, in request_port_ 
forward 
paramiko.ssh_exception.SSHException: TCP forwarding request denied 

这里是有问题的transport.request_port_forward代码:

def request_port_forward(self, address, port, handler=None): 
     if not self.active: 
      raise SSHException('SSH session not active') 
     port = int(port) 
     response = self.global_request('tcpip-forward', (address, port), wait=True) 
     if response is None: 
      raise SSHException('TCP forwarding request denied') 
     if port == 0: 
      port = response.get_int() 
     if handler is None: 
      def default_handler(channel, src_addr, dest_addr_port): 
       #src_addr, src_port = src_addr_port 
       #dest_addr, dest_port = dest_addr_port 
       self._queue_incoming_channel(channel) 
      handler = default_handler 
     self._tcp_handler = handler 
     return port` 

这似乎是我的系统拒绝端口转发的请求。我如何验证此问题并解决问题?我在Windows 7上运行。

回答

1

这听起来像是服务器上被阻塞的东西。虽然我对Windows不是很熟悉,但我相信应该可以安装SSH命令行客户端,并尝试使用sram客户端与Paramiko进行复制。如果它适用于SSH客户端,则知道您的代码存在问题。否则,你有一个服务器配置问题。

0

这只是发生在我身上,如果您试图端口转发的计算机不希望您转发它正在转发的端口,通常会出现这种错误。

  1. 这可能是你要转发的(即< 1024)在机器上保留端口
  2. 这可能是已在侦听端口(你有没有程序运行的另一个实例,如果你能在服务器上得到netstat -an,你可能会看到端口有)
  3. 你可以让SELinux的(或其他安全)策略阻止你为
  4. 登录用户

的paramiko阻止我完全不同的原因,而不是这三个我暗示STED。来自paramiko文档的代码非常好,但需要一些改进来处理错误。

您应该可能会处理该错误,如果第一次无法正常工作,请重试一次。

相关问题