2017-06-14 11 views
0

クライアント用にPython3 ftplibを使用してSSH経由でWS-FTPサーバに接続する際に問題があります。ftplib.FTP_TLSが鍵交換を開始できません

import ftplib 
sess = ftplib.FTP_TLS() 
sess.connect(<hostname>, 22) 

これは単なるsess.connectでハング:

はここで小さな例です。

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 

2つのことを目立た:

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のは、この例を示します

  • ftplibの()(またはその下位ライブラリ)は表示されません。ここでの接続()からのトレースバックですSSHクライアントを送信する:プロトコルメッセージ
  • サーバがServer:Protocolメッセージで応答した後、ftplibはACKを送信してキーexchanを開始しませんge。

何が起こっているのか、どのように修正するのですか?私はここで私の能力の崖の上にいるのではないかと心配しています。

答えて

0

サーバーはFTPSではなくSFTPサーバーであることが判明しました。 this questionへの回答は、ParamikoまたはTwistedを提案します。

関連する問題