Python - Paramiko - incompatible ssh server

2019-04-10 16:33发布

问题:

I have an error on a script I have wrote since few months, it worked very good with a raspberry pi, but now with an orange pi I have this:

>>> 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)

I can connect in console with ssh without problem.

Somebody has an idea ?

回答1:

You should check if any of those MACs algorithms are available on your SSH server (sshd_config, key: MACs) :

  • HMAC-SHA1
  • HMAC-MD5
  • HMAC-SHA1-96
  • HMAC-MD5-96.

They are needed in order for Paramiko to connect to your SSH server.



回答2:

On your remote server, edit /etc/ssh/sshd_config and add a MACs line or append to the existing one, with one or more of hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96 (values are comma-separated), for example:

MACs hmac-sha1

Now restart sshd: sudo systemctl restart ssh.



回答3:

If the above solutions do not work, you need to upgrade Paramiko as found out by this answer.