Python-Pysftp错误

Python-Pysftp错误,python,sftp,pysftp,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服务器时出错 这应该是直截了当的,但我得到以下错误: 回溯(最近一次呼叫最后一次): 文件“/Users/gavinhinfey/Doc

我的代码:

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服务器时出错

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

回溯(最近一次呼叫最后一次):
文件“/Users/gavinhinfey/Documents/Python Files/sftp_test.py”,第3行,在
s=pysftp.Connection(host='test.rebex.net',username='demo',password='password')
文件“build/bdist.macosx-10.6-intel/egg/pysftp.py”,第55行,在__
文件“build/bdist.macosx-10.5-intel/egg/paramiko/transport.py”,第303行,在__
paramiko.SSHException:无法连接到test.rebex.net:[Errno 60]操作超时
异常AttributeError:“'Connection'对象在忽略中没有属性'\u transport\u live'”
我尝试过使用不同版本的python(主要是2.7),安装了所有依赖项,并尝试了许多sftp连接。
我使用的是OS X 10.9.1。

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


是您的朋友。

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

找到一个更好的办法

1) 您可以手动将ssh密钥添加到已知的\u 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

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

@全部:当前pysftp.CnOpts()对象似乎有一个bug:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
上述代码不阻止主机密钥检查

python getfile_v3.py--帮助 回溯(最近一次呼叫最后一次): 文件“getfile_v3.py”,第9行,在 cnopts=pysftp.cnopts() 文件“c:\Program Files\Python\Python38\lib\site packages\pysftp_init_uu2;.py”,第64行,在init 引发主机密钥异常('未找到主机密钥') pysftp.exceptions.HostKeysException:未找到主机密钥

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

      cnopts = pysftp.CnOpts(hostkeys=None)
同样的错误结果

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


Joe White

对不起,代码输入代码是
import pysftp s=pysftp.Connection(host='test.rebex.net',username='demo',password='password')data=s.listdir()s.close()for i in data:print i
您确定您的主机是正确的,端口没有被阻塞吗?您的错误日志告诉您,您与主机的连接超时,在此之后,
s
对象将不会启动,并为无法启动的对象抛出正常错误。我可以使用具有相同详细信息的文件Zilla连接吗?这是否意味着我的端口没有被阻塞?奇怪。也许可以尝试
log=True
在您的
kwargs
中进行
Connection
并将您得到的内容发布到那里。对不起,当我添加log=True时,它在哪里输出日志?感谢Spython 2.7的pip说:
没有这样的选项:-u
。永远不要使用选项2),除非你不关心安全!这个答案并没有回答原来的问题。也许试着做一个bug报告或者问另一个问题?
      cnopts = pysftp.CnOpts(hostkeys=None)