gpt4 book ai didi

python - 使用私钥通过 pysftp 连接到 SFTP 服务器时出现 "No hostkey for host ***** found"

转载 作者:行者123 更新时间:2023-11-28 18:05:14 26 4
gpt4 key购买 nike

所以我在通过 SFTP 连接到远程服务器时遇到了很多问题。我已经尝试了如下的正常方式。

sftp = pysftp.Connection(host='Host',username='username',password='passwd',private_key=".ppk")

这没有用。我收到以下错误:

SSHException: No hostkey for host ***** found.

然后我尝试了以下操作:

cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
s = pysftp.Connection(host='host', username='user', password='password', cnopts=cnopts)

这也没有用。我收到以下错误:

BadAuthenticationType: ('Bad authentication type', ['publickey']) (allowed_types=['publickey'])

还有当我运行以下命令时:

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("host",username = "username",password = "password")
ssh_session = client.get_transport().open_session()

同样的错误:

BadAuthenticationType: ('Bad authentication type', ['publickey']) (allowed_types=['publickey'])

最佳答案

您混淆了用于身份验证的私钥和用于验证服务器身份的主机 key 。两者都需要处理,而您所有的代码尝试都只​​处理其中一个。请参阅关于 SSH key pairs我的文章了解SSH中涉及的两种 key 的区别。

所以这应该“有效”:

# Accept any host key (still wrong see below)
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
# And authenticate with a private key
sftp = pysftp.Connection(
host='Host', username='user', password='passwd', private_key=".ppk",
cnopts=cnopts)

但这段代码实际上会盲目地接受任何主机 key (cnopts.hostkeys = None),这是一个安全漏洞。有关正确方法,请参阅 Verify host key with pysftp .

关于python - 使用私钥通过 pysftp 连接到 SFTP 服务器时出现 "No hostkey for host ***** found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53864260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com