如何使用特定的HostkeyAlgorithms配置pysftp/paramiko连接 - Python

4

我需要自动将文件从一个服务器传输到客户的SFTP服务器。我已经使用Python的pysftp包完成了数百次此操作。但是,在这种情况下,我需要设置HostkeyAlgorithm。由于pysftp似乎完全缺少此选项并建立在Paramiko上,我已经阅读了Paramiko文档。但是,我实在不知道该怎么做(我很少涉及网络相关的事情)。我一直在通过以下方式手动发送:

sftp -o HostkeyAlgorithms=+ssh-dss user@host.com

我尝试使用以下Python代码,但没有成功:

import paramiko

_host='somehostname.com'
_user='thisguy'
_pass='you_get_the_idea'

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.MissingHostKeyPolicy())
client.connect(_host, 22, _user, _pass)
这将返回:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 424, in connect
    passphrase,
  File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 714, in _auth
    raise saved_exception
paramiko.ssh_exception.AuthenticationException: Authentication failed.

所以我猜问题就是在设置Paramiko连接时,我在哪里/如何添加-o HostkeyAlgorithms=+ssh-dss呢?

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
0

Paramiko将使用与您为会话配置的主机密钥匹配的主机密钥算法。

您不需要指定任何主机密钥,而是盲目接受所有主机密钥(MissingHostKeyPolicy),这是一个安全漏洞。您将失去对MITM攻击的保护。

有关正确(和安全)的方法,请参见:


虽然我实际上不明白,为什么你想要设置“HostkeyAlgorithms”,如果你甚至不通过MissingHostKeyPolicy验证主机密钥?- “身份验证失败”错误肯定与主机密钥无关。


1
谢谢马丁的回复和提供的链接。我也不喜欢MissingHostKeyPolicy这个选项看起来有点奇怪,但是当我在谷歌搜索时,总是发现它出现在很多地方,所以我尝试了一下。知道现在不要使用它了,因为存在安全问题。你提供的链接非常有帮助。 - D_Vandagriff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,