猿问

如何将连接超时设置为 sshtunnel

我在 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..... : 110

Traceback (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 gateway

Ubuntu 18.04,蟒蛇 2.7


是否可以设置隧道建立超时?


蝴蝶刀刀
浏览 441回答 1
1回答

米琪卡哇伊

在调用它之前,在用于创建传输的套接字上设置SSH_TIMEOUT了一个默认值为Nonein的常量。sshtunnel.pyconnect不幸的是,我自己无法对此进行测试,但您可以在启动隧道转发器之前尝试修补该常量:import sshtunnelsshtunnel.SSH_TIMEOUT = 5.0server = sshtunnel.SSHTunnelForwarder([...])&nbsp; &nbsp;&nbsp;server.start()还有一个TUNNEL_TIMEOUT恒定的,但似乎要用于检查通道是否已经建立和调用open_channel的底层的paramiko运输实例。它似乎在隧道的创建过程中没有发挥作用。另外,TUNNEL_TIMEOUT默认情况下设置为一秒,并且您server.start()在BaseSSHTunnelForwarderError引发之前遇到长达一分钟的延迟,这个常数似乎不太可能与您的问题的解决方案相关。
随时随地看视频慕课网APP

相关分类

Python
我要回答