7

我的代码:

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。

4

3 回答 3

15

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

在这里找到了更好的方法。

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
于 2016-07-13T14:53:11.753 回答
6

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

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

pip install -U pysftp

是你的朋友。

于 2014-05-15T17:39:27.890 回答
-1

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

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

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

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

python getfile_v3.py --help Traceback(最近一次调用最后):文件“getfile_v3.py”,第 9 行,在 cnopts = pysftp.CnOpts() 文件“c:\Program Files\Python\Python38\lib\site-packages \pysftp_ init _.py",第 64 行,在init中 引发 HostKeysException('No Host Keys Found') pysftp.exceptions.HostKeysException: No Host Keys Found

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

      cnopts = pysftp.CnOpts(hostkeys=None)

同样的错误结果。

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

乔·怀特

于 2021-02-04T16:21:15.457 回答