0
我通過SSH連接到使用Python3 ftplib爲客戶端的WS-FTP服務器時出現問題。ftplib.FTP_TLS無法啓動密鑰交換
這裏有一個小例子:
import ftplib
sess = ftplib.FTP_TLS()
sess.connect(<hostname>, 22)
這只是掛在sess.connect。下面是連接()回溯:
Traceback (most recent call last):
File "o:/Thy.Python/logls.py", line 19, in <module>
logs = u.newSession()
File "/cygdrive/o/Thy.Python/logutils.py", line 41, in newSession
sess.connect(findsys(), 22)
File "/usr/lib/python3.6/ftplib.py", line 155, in connect
self.welcome = self.getresp()
File "/usr/lib/python3.6/ftplib.py", line 234, in getresp
resp = self.getmultiline()
File "/usr/lib/python3.6/ftplib.py", line 224, in getmultiline
nextline = self.getline()
File "/usr/lib/python3.6/ftplib.py", line 202, in getline
line = self.file.readline(self.maxline + 1)
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
Wireshark的說明這一點:
2017-06-14 11:26:21.623858 <Client> <Server> TCP 66 57092 › 22 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
2017-06-14 11:26:21.625280 <Server> <Client> TCP 62 22 › 57092 [SYN, ACK] Seq=0 Ack=1 Win=4380 Len=0 MSS=1460 SACK_PERM=1
2017-06-14 11:26:21.625428 <Client> <Server> TCP 54 57092 › 22 [ACK] Seq=1 Ack=1 Win=64240 Len=0
2017-06-14 11:26:21.649362 <Server> <Client> SSH 78 Server: Protocol (SSH-2.0-WS_FTP-SSH_7.7)
2017-06-14 11:26:21.843439 <Client> <Server> TCP 54 57092 › 22 [ACK] Seq=1 Ack=25 Win=64216 Len=0
兩件事情引人注目:
- FTPLIB()(或其下屬庫)不會出現發送SSH客戶端:協議消息
- 服務器響應其服務器:協議消息後,ftplib只發送一個ACK並且不會啓動密鑰交換GE。
任何人都可以表明發生了什麼,以及如何解決它?恐怕我在這裏的能力懸崖邊緣。