我正在尝试使用以下脚本连接到服务器:
import pysftp
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
srv = pysftp.Connection(host="sftp://my_ip:my_port",
username="alessandro", password="alessandro", port=2222,
cnopts=cnopts)
data = srv.listdir()
srv.close()
for i in data:
print (i)
如果我尝试使用相同的凭据通过FileZilla或类似的客户端访问,它将起作用;即使它显示以下警告,有关主机密钥算法和指纹的信息也是如此:
但是,该脚本无法正常运行,并报告以下错误:
SSHException:无法连接到sftp:// my_ip:my_port:[Errno 60]操作超时
即使我仅尝试使用 host = my_ip 。另外,如果我未设置cnopts,则找不到主机密钥。
我该如何解决?
答案 0 :(得分:0)
Connection
constructor的host
参数为:
远程计算机的主机名或 IP 。
不是 URL 。
应该是:
srv = pysftp.Connection(host="my_ip",
username="alessandro", password="alessandro", port=2222,
cnopts=cnopts)
此外,除非您不关心安全性,否则请不要设置cnopts.hostkeys = None
。
有关正确的解决方案,请参见Verify host key with pysftp。