【问题标题】:How to configure pysftp/paramiko connection with specific HostkeyAlgorithms - python如何使用特定的 HostkeyAlgorithms 配置 pysftp/paramiko 连接 - python
【发布时间】:2020-10-30 14:59:00
【问题描述】:

我需要自动将文件从一台服务器传输到客户端的 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

【问题讨论】:

    标签: python ssh sftp paramiko pysftp


    【解决方案1】:

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

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

    有关正确(且安全)的方法,请参阅:


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

    【讨论】:

    • 感谢 Martin 的回复和链接。我也不喜欢 MissingHostKeyPolicy 位的样子,但它不断出现在我在谷歌搜索时看到的所有内容中,所以我尝试了它。很高兴知道由于安全问题而不要使用它。您发布的链接非常有用。
    猜你喜欢
    • 2018-07-04
    • 2020-12-25
    • 1970-01-01
    • 2019-05-09
    • 2018-03-30
    • 2017-05-29
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多