Python - Paramiko - 不兼容的ssh服务器

4

我有一个脚本出现了错误,我已经写了几个月了,它在树莓派上运行得非常好,但是现在在橙色的pi上出现了这个问题:

>>> import paramiko
>>> transport = paramiko.Transport("192.168.2.2", 22)
>>> transport.connect(username = "orangepi", password = "my_pass")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 978, in connect
    self.start_client()
  File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 406, in start_client
    raise e
paramiko.ssh_exception.SSHException: Incompatible ssh server (no acceptable macs)

我可以在控制台上使用ssh连接,没有问题。
有什么想法吗?

1
看起来 Paramiko 和你的 SSH 服务器实现之间没有共同的 MAC 算法。Paramiko 支持 HMAC-SHA1、HMAC-MD5、HMAC-SHA1-96、HMAC-MD5-96。 - Raito
1
可以通过在您的Raspberry Pi上将MAC算法hmac-sha1-etm@openssh.com [其他MAC算法]添加到您的sshd_config中来解决此问题,我想。 - Raito
啊,好的,我看到文件了。# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 我会尝试将其取消注释。谢谢。 - Guillaume
不要忘记重新启动你的sshd服务器。 - Raito
我将把它作为最终答案添加。 - Raito
显示剩余3条评论
3个回答

6

您应该检查您的SSH服务器上是否有这些MAC算法可用(sshd_config,键:MACs):

  • HMAC-SHA1
  • HMAC-MD5
  • HMAC-SHA1-96
  • HMAC-MD5-96。

为了使Paramiko能够连接到您的SSH服务器,这些算法是必需的


6
在您的远程服务器上,编辑/etc/ssh/sshd_config文件,并添加一个MACs行或将其附加到现有行中,其中包含一个或多个hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96(值用逗号分隔),例如:
MACs hmac-sha1

现在重启sshd:sudo systemctl restart ssh

2
请注意,这是一种安全风险(虽然很小),大多数其他MAC都基于更安全的哈希。 - Gert van den Berg

0

如果上述解决方案无效,您需要升级Paramiko,如此答案所述。


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