我在 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是否可以設(shè)置隧道建立超時?
1 回答

米琪卡哇伊
TA貢獻1998條經(jīng)驗 獲得超6個贊
在調(diào)用它之前,在用于創(chuàng)建傳輸?shù)奶捉幼稚显O(shè)置SSH_TIMEOUT了一個默認值為Nonein的常量。sshtunnel.pyconnect
不幸的是,我自己無法對此進行測試,但您可以在啟動隧道轉(zhuǎn)發(fā)器之前嘗試修補該常量:
import sshtunnel
sshtunnel.SSH_TIMEOUT = 5.0
server = sshtunnel.SSHTunnelForwarder([...])
server.start()
還有一個TUNNEL_TIMEOUT恒定的,但似乎要用于檢查通道是否已經(jīng)建立和調(diào)用open_channel的底層的paramiko運輸實例。它似乎在隧道的創(chuàng)建過程中沒有發(fā)揮作用。
另外,TUNNEL_TIMEOUT默認情況下設(shè)置為一秒,并且您server.start()在BaseSSHTunnelForwarderError引發(fā)之前遇到長達一分鐘的延遲,這個常數(shù)似乎不太可能與您的問題的解決方案相關(guān)。
添加回答
舉報
0/150
提交
取消