2015-12-07 26 views
5

ile protokolün ihlali olarak meydana geldi python ftplib ile örtülü bir bağlantı programı üzerinde çalışıyorum. Bağlantı için python-ftp-implicit-tls-connection-issue (Rg Glpj ve Juan Moreno'nun cevapları dahil) verilen çözümü denedim. Bir EOF hata var EOF, python ftplib

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() 

: göründüğü gibi

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 kullanır Böyle ftp sunucuya giriş yaptıktan sonra retrline veya retrbinary çağırdığınızda Ama (FTP_ITLSFTP_TLS ait alt sınıfıdır) Python 2.7'deki varsayılan protokol olarak, PROTOCOL_TLSv1, PROTOCOL_TLSv1_1 ve PROTOCOL_TLSv1_2 denedim, ancak bunların hiçbiri işe yaramadı. Ayrıca, ve auth'u geçersiz kılmayı veya ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1)'u Steffen Ullrich'in connect-to-ftp-tls-1-2-server-with-ftplib numaralı telefondan söylediği gibi ayarlamayı denedim, ancak hata hiç bir zaman ortadan kalkmadı. O zaman ne yapabilirim? Teşekkürler.

cevap

0

Bir FileZilla FTP sunucusuna bağlanmaya çalışırken buna rastladım. FileZilla, "PROT P kullanırken veri bağlantısında TLS oturumu yeniden başlatılmasını gerektir" olarak adlandırılan "TLS ayarlarının üzerinde FTP" ayarında bir ayar vardır. Bu seçeneği devre dışı bırakmak, bu sorunu giderdi.

Sunucu üzerinde denetime sahip değilseniz, oturum yeniden kullanımını etkinleştirmek için kullanılan FTPES - Session Reuse Required'a bakın. Ancak bu, Python 3.6+ 'ye ihtiyaç duyuyor.