使用 pysftp 执行 sftp 但出现主机密钥错误

Posted

技术标签:

【中文标题】使用 pysftp 执行 sftp 但出现主机密钥错误【英文标题】:Doing sftp using pysftp but getting hostkey error 【发布时间】:2020-02-25 11:16:36 【问题描述】:

尝试使用 ssh 密钥连接到 sftp 服务器

#!/bin/python

import pysftp
with pysftp.Connection(host='sftp.myserver.com', username='stg', private_key='/Users/joel/.ssh/id_rsa_sftp', private_key_pass='') as sftp:

我得到了

raise SSHException("No hostkey for host %s found." % host)

【问题讨论】:

见Verify host key with pysftp。 这是 pysftp = 0.2.9 的已知问题,因此我移至 paramiko "Failed to load HostKeys" warning while connecting to SFTP server with pysftp的可能重复 【参考方案1】:

你可以使用我来自github的pysftp fork并添加auto_add_key=True 这将在第一次连接时将主机密钥添加到您的 known_hosts 文件...

import pysftp

with pysftp.Connection('hostname', username='me', password='secret', auto_add_key=True) as sftp:
    with sftp.cd('public'):             # temporarily chdir to public
        sftp.put('/my/local/filename')  # upload file to public/ on remote
        sftp.get('remote_file')         # get a remote file

【讨论】:

以上是关于使用 pysftp 执行 sftp 但出现主机密钥错误的主要内容,如果未能解决你的问题,请参考以下文章

pysftp 忽略禁用的主机密钥检查

使用私钥通过 pysftp 连接到 SFTP 服务器时“找不到主机 ***** 的主机密钥”

错误:pysftp 中的“无法加载主机密钥”[重复]

如何使用 ssh-ed25519 作为 pysftp 的密钥来设置主机密钥文件

PySFTP失败,“在部署Django / Heroku时出现”找不到主机X的主机密钥”

Python - pysftp / paramiko - 使用其指纹验证主机密钥