Python Pysftp错误

时间:2014-01-13 13:48:13

标签: python sftp pysftp

我的代码:

import pysftp 
s = pysftp.Connection(host='test.rebex.net', username='demo', password='password') 
data = s.listdir() 
s.close() 
for i in data: 
    print i

尝试使用pysftp连接到SFTP服务器时出错。

这应该是直截了当的,但我得到以下错误:

Traceback (most recent call last):
  File "/Users/gavinhinfey/Documents/Python Files/sftp_test.py", line 3, in <module>
    s = pysftp.Connection(host='test.rebex.net', username='demo', password='password')
  File "build/bdist.macosx-10.6-intel/egg/pysftp.py", line 55, in __init__
  File "build/bdist.macosx-10.5-intel/egg/paramiko/transport.py", line 303, in __init__
paramiko.SSHException: Unable to connect to test.rebex.net: [Errno 60] Operation timed out
Exception AttributeError: "'Connection' object has no attribute '_tranport_live'" in <bound     method Connection.__del__ of <pysftp.Connection object at 0x101a5a810>> ignored

我尝试过使用不同版本的python(大多数是2.7),我已经安装了所有依赖项,并尝试了很多sftp连接。 我正在使用OS X 10.9.1。

3 个答案:

答案 0 :(得分:13)

更新包对我来说不起作用,因为它已经是最新的(至少是python 2.7的最新版本)

找到了更好的方法here

1)您可以手动将ssh密钥添加到known_hosts文件

ssh test.rebex.net

2)或者你可以设置一个标志来忽略它

import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None    # disable host key checking.
with pysftp.Connection('host', username='me',private_key=private_key,
                           private_key_pass=private_key_password,
                           cnopts=cnopts) as sftp
    # do stuff here

答案 1 :(得分:6)

初始错误似乎是连接远程服务器的问题(SSHException)。第二个(AttributeError)来自连接失败时发生的代码中的错误。它已在最新版本的pysftp

中修复

https://pypi.python.org/pypi/pysftp

pip install -U pysftp

是你的朋友。

答案 2 :(得分:-1)

@Martin.Prikryl:在使用 pysftp 编码的初始阶段设置 hostkeys = None 非常有用。调试一个因已知异常而不断失败的程序会隐藏其他需要注意的问题——比如建立实际连接。一旦我知道我的代码实际上工作正常,我就可以在以后处理“中间人”问题。

@All:当前的 pysftp.CnOpts() 对象似乎有一个错误:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None

以上代码不会阻止主机密钥检查。

python getfile_v3.py --help 回溯(最近一次调用最后一次): 文件“getfile_v3.py”,第 9 行,在 cnopts = pysftp.CnOpts() 文件“c:\Program Files\Python\Python38\lib\site-packages\pysftp_init_.py”,第 64 行,init raise HostKeysException('找不到主机密钥') pysftp.exceptions.HostKeysException:找不到主机密钥

第二行不会被执行,因为第一行默认会检查主机密钥。如果我设置密钥:

      cnopts = pysftp.CnOpts(hostkeys=None)

同样的错误结果。

'hostkeys' 似乎已被弃用,并且无法禁用主机密钥检查。

乔·怀特