2016-07-24 29 views
1

Ich benutze Pysftp, um einige Dateien herunterzuladen und hochzuladen. Dieser genau gleiche Code, den ich gerade eine Stunde vorher laufen ließ und in Ordnung war, aber jetzt bekam ich diesen "EOF während der Verhandlung" -Fehler. Was fehlt mir hier?Python pysft/paramiko 'EOF während der Verhandlung' Fehler

>>> sftp = pysftp.Connection(host, username=user, password=pasw) 
>>> sftp 
<pysftp.Connection object at 0x7f88b25bb410> 
>>> sftp.cd('data') 
<contextlib.GeneratorContextManager object at 0x7f88b1a86910> 
>>> sftp.exists(filename) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/pysftp/__init__.py", line 827, in exists 
    self._sftp_connect() 
    File "/usr/local/lib/python2.7/dist-packages/pysftp/__init__.py", line 205, in _sftp_connect 
    self._sftp = paramiko.SFTPClient.from_transport(self._transport) 
    File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 132, in from_transport 
    return cls(chan) 
    File "/usr/local/lib/python2.7/dist-packages/paramiko/sftp_client.py", line 101, in __init__ 
    raise SSHException('EOF during negotiation') 
paramiko.ssh_exception.SSHException: EOF during negotiation 

EDIT: Aktiviert loggin für paramiko.transport und bekam die folgende:

>>> import logging; logging.basicConfig(); logging.getLogger('paramiko.transport').setLevel(logging.DEBUG) 
>>> sftp = pysftp.Connection(host, username=user, password=pasw) 
DEBUG:paramiko.transport:starting thread (client mode): 0x27313b0L 
DEBUG:paramiko.transport:Local version/idstring: SSH-2.0-paramiko_1.16.0 
DEBUG:paramiko.transport:Remote version/idstring: SSH-2.0-OpenSSH_4.3p2 
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_4.3p2) 
DEBUG:paramiko.transport:kex algos:[...] client lang:[u''] server lang:[u''] kex follows?False 
DEBUG:paramiko.transport:Kex agreed: diffie-hellman-group1-sha1 
DEBUG:paramiko.transport:Cipher agreed: aes128-ctr 
DEBUG:paramiko.transport:MAC agreed: hmac-sha2-256 
DEBUG:paramiko.transport:Compression agreed: none 
DEBUG:paramiko.transport:kex engine KexGroup1 specified hash_algo <built-in function openssl_sha1> 
DEBUG:paramiko.transport:Switch to new keys ... 
DEBUG:paramiko.transport:Attempting password auth... 
DEBUG:paramiko.transport:userauth is OK 
INFO:paramiko.transport:Authentication (password) successful! 
>>> sftp.cd('data') 
<contextlib.GeneratorContextManager object at 0x027371D0> 
>>> sftp.exists(filename) 
DEBUG:paramiko.transport:[chan 0] Max packet in: 32768 bytes 
DEBUG:paramiko.transport:[chan 0] Max packet out: 32768 bytes 
DEBUG:paramiko.transport:Secsh channel 0 opened. 
DEBUG:paramiko.transport:[chan 0] Sesch channel 0 request ok 
Traceback (most recent call last): 
DEBUG:paramiko.transport:[chan 0] EOF received (0) 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\pysftp.py", line 802, in exists 
DEBUG:paramiko.transport:[chan 0] EOF sent (0) 
    self._sftp_connect() 
    File "C:\Python27\lib\site-packages\pysftp.py", line 192, in _sftp_connect 
    self._sftp = paramiko.SFTPClient.from_transport(self._transport) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 132, in from_transport 
    return cls(chan) 
    File "C:\Python27\lib\site-packages\paramiko\sftp_client.py", line 101, in __init__ 
    raise SSHException('EOF during negotiation') 
paramiko.ssh_exception.SSHException: EOF during negotiation 
>>> 

Noch immer keine Ahnung von dem, was falsch ist ...

+1

Es stellt sich heraus, dass Paramiko mit einigen Implementierungen von SSH nicht funktioniert. Tatsächlich geben sie es auf ihrer [FAQ-Seite] (http://www.paramiko.org/faq.html) direkt an. Zum Beispiel konnte ich Paramiko nicht mit einer CirrOS-VM verbinden, während der gleiche Code mit einer CentOS-Box funktionierte. – vempo

Antwort

0

stellte sich heraus, das war eine Verbindung Problem im SFTP-Server. Kontaktiert den SFTP-Administrator, der es behoben hat, und nun funktioniert der gleiche Code.

0

Ich habe den gleichen Fehler in einem Programm mit Passwort-Authentifizierung. Es stellte sich heraus, dass das Passwort auf dem SFTP-Server abgelaufen war. Setzen Sie es zurück, und alles hat funktioniert.