paramiko.ssh_exception.SSHException: TCP 转发请求被拒绝
paramiko.ssh_exception.SSHException: TCP forwarding request denied
我正在使用 paramiko 的 rforward.py 演示脚本,它演示了反向 SSH 隧道的工作原理。该代码包含以下几行:
transport.request_port_forward('', server_port)
当我运行这段代码时,我得到以下错误:
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.
这听起来像是在服务器上被阻止了。虽然我对 Windows 不是很熟悉,但我相信应该可以安装 SSH 命令行客户端并尝试使用 ssh 客户端复制您使用 Paramiko 所做的事情。如果它适用于 SSH 客户端,您就知道您的代码存在问题。否则你有服务器配置问题。
这只是发生在我身上,如果您尝试转发的机器不希望您转发它正在转发的端口,通常会出现这种错误。
- 它可能是您要转发的机器上的保留端口(即 < 1024)
- 它可能是一个已经在监听的端口(你有另一个程序实例 运行,如果你可以在服务器上获得
netstat -an
,你可能会在那里看到那个端口)
- 您可以设置 selinux(或其他安全)策略来阻止您作为
登录的用户
Paramiko 阻止我的原因与我建议的这三个完全不同。 paramiko 文档中的代码非常好,但需要一些改进来处理错误。
您可能应该处理该错误,如果第一次没有成功,稍后再试一次。
我正在使用 paramiko 的 rforward.py 演示脚本,它演示了反向 SSH 隧道的工作原理。该代码包含以下几行:
transport.request_port_forward('', server_port)
当我运行这段代码时,我得到以下错误:
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.
这听起来像是在服务器上被阻止了。虽然我对 Windows 不是很熟悉,但我相信应该可以安装 SSH 命令行客户端并尝试使用 ssh 客户端复制您使用 Paramiko 所做的事情。如果它适用于 SSH 客户端,您就知道您的代码存在问题。否则你有服务器配置问题。
这只是发生在我身上,如果您尝试转发的机器不希望您转发它正在转发的端口,通常会出现这种错误。
- 它可能是您要转发的机器上的保留端口(即 < 1024)
- 它可能是一个已经在监听的端口(你有另一个程序实例 运行,如果你可以在服务器上获得
netstat -an
,你可能会在那里看到那个端口) - 您可以设置 selinux(或其他安全)策略来阻止您作为 登录的用户
Paramiko 阻止我的原因与我建议的这三个完全不同。 paramiko 文档中的代码非常好,但需要一些改进来处理错误。
您可能应该处理该错误,如果第一次没有成功,稍后再试一次。