Python 无法从目录-pysftp加载主机密钥

Python 无法从目录-pysftp加载主机密钥,python,ssh,sftp,pysftp,Python,Ssh,Sftp,Pysftp,我试图通过生成的RSA密钥对与SFTP连接。服务器已经向服务器添加了公钥,我可以使用Filezilla访问它。我正在关注这篇文章 然而,我仍然得到同样的错误 C:\Users\John.Doe\Anaconda3\envs\EC_automation\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys from C:\Users\John.Doe\.ssh\known_hosts. You

我试图通过生成的RSA密钥对与SFTP连接。服务器已经向服务器添加了公钥,我可以使用Filezilla访问它。我正在关注这篇文章

然而,我仍然得到同样的错误

C:\Users\John.Doe\Anaconda3\envs\EC_automation\lib\site-packages\pysftp\__init__.py:61: UserWarning: Failed to load HostKeys from C:\Users\John.Doe\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)
Exception ignored in: <function Connection.__del__ at 0x00000256882C5C10>
Traceback (most recent call last):
  File "C:\Users\John.Doe\Anaconda3\envs\EC_automation\lib\site-packages\pysftp\__init__.py", line 1013, in __del__
    self.close()
  File "C:\Users\John.Doe\Anaconda3\envs\EC_automation\lib\site-packages\pysftp\__init__.py", line 784, in close
    if self._sftp_live:
AttributeError: 'Connection' object has no attribute '_sftp_live'
我不明白我的方法有什么问题。我可以在主机密钥中看到主机

编辑

设置
cnopts.hostkeys=None
并将密钥的格式更改为PEM可以解决问题,现在的问题是,如果使用内部网络,在生产中这样做有多糟糕

第二次编辑

由于这些评论,我意识到我试图添加到主机密钥中的密钥存在问题,而主机密钥定义中包含公钥。因此,我尝试添加公钥而不是私钥,但也不起作用。同样的错误

cnopts.hostkeys.add(secrets.FTP_SERVER, 'ssh-rsa', pub_key_path)

您正在混合两个不相关的问题/关键点。看

您正在将用户私钥添加到主机公钥(也称为主机密钥)列表中:

因此,1)“设置
cnopts.hostkeys=None
”和2)“将密钥格式更改为PEM”解决了两个不同的问题。1) 解决(或以牺牲安全性为代价)主机密钥问题。2) 解决身份验证问题(用户私钥)


要真正解决问题1),请再次检查我对您知道的问题的回答:–如果没有帮助,请提出新的更具体的问题。

您正在混合两个不相关的问题/关键。看

您正在将用户私钥添加到主机公钥(也称为主机密钥)列表中:

因此,1)“设置
cnopts.hostkeys=None
”和2)“将密钥格式更改为PEM”解决了两个不同的问题。1) 解决(或以牺牲安全性为代价)主机密钥问题。2) 解决身份验证问题(用户私钥)

要真正解决问题1),请再次检查我对您知道的问题的回答:–如果没有帮助,请提出新的更具体的问题

cnopts.hostkeys.add(secrets.FTP_SERVER, 'ssh-rsa', pub_key_path)
cnopts.hostkeys.add(secrets.FTP_SERVER, 'ssh-rsa', priv_key_path)