[英]How to set connection timeout to 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,Python 2.7
是否可以設置隧道建立超時?
這里有一個SSH_TIMEOUT
用的默認常量None
在sshtunnel.py
是在上設置用於創建傳輸插座之前調用connect
就可以了。
不幸的是,我自己無法測試,但是您可以在啟動隧道轉發器之前嘗試修補該常量:
import sshtunnel
sshtunnel.SSH_TIMEOUT = 5.0
server = sshtunnel.SSHTunnelForwarder([...])
server.start()
還有一個TUNNEL_TIMEOUT
常量,但這似乎用於檢查隧道是否已建立以及在基礎 open_channel
Transport實例上對open_channel
的調用。 它在隧道創建期間似乎沒有作用。
另外,默認情況下, TUNNEL_TIMEOUT
設置為一秒,並且在BaseSSHTunnelForwarderError
之前, server.start()
會經歷一分鍾的延遲,因此該常量似乎不太可能與您的問題相關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.