Я пишу программу, использующую pysftp, и она хочет проверить ключ хоста SSH на соответствие C:\Users\JohnCalvin\.ssh\known_hosts
.
Используя 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: UserWarning:
Не удалось загрузить HostKeys из C: \ Users \ JohnCalvin.ssh \ known_hosts.
Вам понадобится для явной загрузки HostKeys (cnopts.hostkeys.load (filename)) или отключения проверки HostKey (cnopts.hostkeys = None). 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 = '********') Файл" E : \ Program Files (x86) \ Anaconda3 \ lib \ site-packages \ pysftp__init __. Py ", строка 132, в init self._tconnect ['hostkey'] = self._cnopts.get_hostkey (host) Файл «E: \ Program Files (x86) \ Anaconda3 \ lib \ site-packages \ pysftp__init __. Py», строка 71, в get_hostkey raise SSHException («Нет hostkey для хоста% 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, закрывается, если self._sftp_live: AttributeError: объект 'Connection' не имеет атрибута '_sftp_live'
pysftp
документация, в которой эта проблема явно упоминается здесь. - person patryk.beza   schedule 25.08.2017