为了账号安全,请及时绑定邮箱和手机立即绑定

如何将连接超时设置为 sshtunnel

如何将连接超时设置为 sshtunnel

蝴蝶刀刀 2022-01-18 17:51:52
我在 python 上使用来自 sshtunnel 模块的 SSHTunnelForwarder。给定下一个代码:server = SSHTunnelForwarder(    (sshServer, sshPort),    ssh_username=sshUsername,    ssh_password=sshPassword,    remote_bind_address=(imapServer, imapPort),    local_bind_address=('127.0.0.1', localPort))print('STARTING')server.start()print(server.is_active)有时需要很长时间,也许几分钟,然后我得到错误:2019-04-22 22:25:54,365| ERROR   | Could not connect to gateway ip..... : 110Traceback (most recent call last):  File "PYTHON_TUNNEL.py", line 24, in <module>    server.start()  File "/home/mike/.local/lib/python2.7/site-packages/sshtunnel.py", line 1295, in start    reason='Could not establish session to SSH gateway')  File "/home/mike/.local/lib/python2.7/site-packages/sshtunnel.py", line 1101, in _raise    raise exception(reason)sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gatewayUbuntu 18.04,蟒蛇 2.7是否可以设置隧道建立超时?
查看完整描述

1 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

在调用它之前,在用于创建传输的套接字上设置SSH_TIMEOUT了一个默认值为Nonein的常量。sshtunnel.pyconnect


不幸的是,我自己无法对此进行测试,但您可以在启动隧道转发器之前尝试修补该常量:


import sshtunnel


sshtunnel.SSH_TIMEOUT = 5.0


server = sshtunnel.SSHTunnelForwarder([...])    

server.start()

还有一个TUNNEL_TIMEOUT恒定的,但似乎要用于检查通道是否已经建立和调用open_channel的底层的paramiko运输实例。它似乎在隧道的创建过程中没有发挥作用。

另外,TUNNEL_TIMEOUT默认情况下设置为一秒,并且您server.start()在BaseSSHTunnelForwarderError引发之前遇到长达一分钟的延迟,这个常数似乎不太可能与您的问题的解决方案相关。


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 440 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信