【发布时间】:2016-12-20 17:40:23
【问题描述】:
我正在使用 pysftp 编写一个程序,它想根据C:\Users\JohnCalvin\.ssh\known_hosts 验证 SSH 主机密钥。
终端程序使用 PuTTY 将其保存到注册表[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys]。
如何调和 pysftp 和 PuTTY 之间的区别?
我的代码是:
import pysftp as sftp
def push_file_to_server():
s = sftp.Connection(host='138.99.99.129', username='root', password='*********')
local_path = "testme.txt"
remote_path = "/home/testme.txt"
s.put(local_path, remote_path)
s.close()
push_file_to_server()
我收到的错误响应是:
E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py:61:用户警告:
无法从 C:\Users\JohnCalvin.ssh\known_hosts 加载 HostKey。
您将需要显式加载 HostKeys (cnopts.hostkeys.load(filename)) 或 disableHostKey 检查 (cnopts.hostkeys = 无)。 warnings.warn(wmsg, UserWarning) 回溯 (最近一次通话最后):文件 “E:\OneDrive\Python\GIT\DigitalCloud\pysftp_tutorial.py”,第 14 行,在 push_file_to_server() 文件“E:\OneDrive\Python\GIT\DigitalCloud\pysftp_tutorial.py”,第 7 行,在 push_file_to_server s = sftp.Connection(host='138.99.99.129', username='root', password='********') File "E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py",第 132 行,在 初始化 self._tconnect['hostkey'] = self._cnopts.get_hostkey(host) File "E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py",第 71 行,在 获取主机密钥 raise SSHException("No hostkey for host %s found." % host) paramiko.ssh_exception.SSHException: No hostkey for host 138.99.99.129 成立。异常被忽略:> Traceback(大多数 最近通话最后):文件“E:\ Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py",第 1013 行,在 德尔 self.close() 文件“E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py”,第 784 行,在 关闭 if self._sftp_live: AttributeError: 'Connection' object has no attribute '_sftp_live'
【问题讨论】:
-
你可以在
pysftpdocumentation找到你的问题的答案,它明确提到了这个问题here。
标签: python ssh public-key pysftp