本文介绍了Python pysft/paramiko'协商中的EOF'错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用pysftp下载和上传一些文件.我刚在一个小时前运行了这个完全相同的代码,很好,但是现在我收到了协商期间的EOF"错误.我在这里想念什么?
I'm using pysftp to download and upload some files. This exact same code I just run an hour before and was fine, but now I got this 'EOF during negotiation' error. What am I missing here?
>>> 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
为paramiko.transport启用loggin并获得以下信息:
Enabled loggin for paramiko.transport and got the following:
>>> 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
>>>
仍然不知道哪里出了问题...
Still no clue of what is wrong...
推荐答案
原来这是SFTP服务器中的连接问题.联系了修复它的SFTP管理员,现在相同的代码可以正常工作.
Turns out this was a connection issue in the SFTP server. Contacted the SFTP admin who fixed it, and now the same code works fine.
这篇关于Python pysft/paramiko'协商中的EOF'错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!