2015-12-07 25 views
5

私はpython ftplibで暗黙のtls接続プログラムを開発中です。私は問題python-ftp-implicit-tls-connection-issue(Rg GlpjとJuan Morenoの回答を含む)のソリューションを試して接続を試みました。私はEOFエラーまし Python ftplibとのプロトコル違反でEOFが発生しました

58 server = FTP_ITLS() 
59 server.connect(host="x.x.x.x", port=990) 
60 server.login(user="user", passwd="******") 
61 server.prot_p() 
62 
63 server.cwd("doc") 
64 print(server.retrlines('LIST')) 
65 # server.retrbinary('RETR contents.7z', open('contents.7z', 'wb').write) 
66 server.quit() 

:それはそうと

Traceback (most recent call last): 
    File "D:/Coding/test/itls.py", line 64, in <module> 
    print(server.retrlines('LIST')) 
    File "D:\Python\Python27\lib\ftplib.py", line 735, in retrlines 
    conn = self.transfercmd(cmd) 
    File "D:\Python\Python27\lib\ftplib.py", line 376, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
    File "D:\Python\Python27\lib\ftplib.py", line 713, in ntransfercmd 
    server_hostname=self.host) 
    File "D:\Python\Python27\lib\ssl.py", line 352, in wrap_socket 
    _context=self) 
    File "D:\Python\Python27\lib\ssl.py", line 579, in __init__ 
    self.do_handshake() 
    File "D:\Python\Python27\lib\ssl.py", line 808, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:590) 

がftplibのはPROTOCOL_SSLv23を使用しています私はこのようなftpサーバにログインした後retrlineまたはretrbinaryを呼び出すときにでも(FTP_ITLSFTP_TLSのサブクラスです) Python 2.7のデフォルトプロトコルとして PROTOCOL_TLSv1、PROTOCOL_TLSv1_1、およびPROTOCOL_TLSv1_2を試しましたが、いずれも機能しませんでした。また、connect-to-ftp-tls-1-2-server-with-ftplibでSteffen Ullrichが言ったようにntransfercmdauthを無効にするか、ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)に設定しましたが、エラーは消えませんでした。私は何をすることができますか?ありがとう。

答えて

0

FileZilla FTPサーバーに接続しようとしましたが、この問題が発生しました。 FileZillaには、「FTP over TLS settings」の設定があります。「PROT Pを使用しているときにデータ接続にTLSセッションの再開が必要です」という名前です。このオプションを無効にすると、この問題が解決しました。

サーバーを制御できない場合は、FTPES - Session Reuse Requiredでセッションの再利用を有効にする方法を確認してください。しかしこれにはPython 3.6以降が必要です。

関連する問題