我需要自动将文件从一台服务器传输到客户端的SFTP服务器。我已经使用Python的pysftp软件包完成了数百次。但是,在这种情况下,我需要设置HostkeyAlgorithm
。我读过Paramiko的文档,因为pysftp似乎完全没有这个选项,而是建立在Paramiko之上。但老实说,我不知道该怎么做(我经常不去玩网络事物)。我通过bash手动发送以下内容:
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
?
答案 0 :(得分:0)
Paramiko将使用主机密钥算法匹配您为会话配置的主机密钥。
您没有指定任何主机密钥,而是盲目地接受所有主机密钥(MissingHostKeyPolicy
),这是一个安全漏洞。你失去了对MITM attacks的保护。
有关正确(且安全)的方法,请参阅:
虽然,我实际上不明白,为什么你要设置&#34; HostkeyAlgorithms&#34;,如果你甚至没有验证MissingHostKeyPolicy
导致的主机密钥? - &#34;身份验证失败&#34; 错误肯定与主机密钥无关。