2
我使用python paramiko(包裹在pysftp中),並且似乎存在一個問題,如果它在ssh期間無法驗證,它將掛起很長時間。我無法找到一種方法來設置連接的超時時間,並且我正在騎自行車穿越很多機器,因此一臺可以ping通但不可用ssh(一種無法通過cmdline ssh訪問)的計算機正在懸掛一切。使用此:Paramiko ssh_config參數
ssh -o ServerAliveInterval=1 -o ServerAliveCountMax=1 <host>
我至少可以得到它在1秒鐘後報錯了,而無需等待很長一段時間的paramiko中的認證,消亡以及引發異常。但是,我無法弄清楚如何將這些ssh_config選項傳遞給paramiko(或者更好地將連接超時應用)。我嘗試過使用SSHConfig模塊並讀取配置文件,但它似乎並不適用於任何地方的數據,似乎更多地用於主機別名。
任何幫助將不勝感激,一直在四處尋找信息/幫助了很多小時。
您好,感謝您的答覆!是的,這就是我在第二次使用超時連接的情況下做的事情,但是它並沒有超時。我這樣做: >>>進口的paramiko >>>客戶端= paramiko.SSHClient() >>> client.load_system_host_keys() >>> client.connect(主機名= node.hostname,超時= 1.0) – user1420676
,它只是掛在那兒很長一段時間,然後: 回溯(最近通話最後一個): 文件「」,1號線,在 文件「/usr/lib/pymodules/python2.6/ paramiko/client.py「,第327行,連接 self._auth(用戶名,密碼,pkey,key_filenames,allow_agent,look_for_keys) 文件」/usr/lib/pymodules/python2.6/paramiko/client.py「, 481行,在_auth raise saved_exception paramiko.SSHException:不存在會話 我不確定它在做什麼,但我很確定它在auth_handler的wait_for_response中。現在我只是使用子進程.Popen –
user1420676
對不起,問題不在於TCP連接,而是在TCP連接建立之後進行SSH協商。你可能能夠得到更多的細節,如果你看看paramiko日誌:'paramiko.util.log_to_file('paramiko.log')' – mhawke