我正在使用 pysftp 编写一个程序,它想针对C:\Users\JohnCalvin\.ssh\known_hosts
.
使用 PuTTY,终端程序将其保存到 Registry [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: UserWarning:
无法从 C:\Users\JohnCalvin.ssh\known_hosts 加载 HostKeys。
您将需要显式加载 HostKeys (cnopts.hostkeys.load(filename)) 或禁用HostKey 检查 (cnopts.hostkeys = None)。warnings.warn(wmsg, UserWarning) Traceback(最近一次调用最后):文件“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='********') 文件“E :\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py",第 132 行,在 init self._tconnect['hostkey'] = self._cnopts.get_hostkey(host) File "E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py", line 71, in get_hostkey raise SSHException("找不到主机 %s 的主机密钥。” % host) paramiko.ssh_exception.SSHException:找不到主机 138.99.99.129 的主机密钥。异常在以下位置被忽略:> Traceback(最近一次调用最后一次):文件“E:\Program Files (x86)\Anaconda3\lib\site-packages\pysftp__init__.py”,第 1013 行,在 del 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'