Paramiko Несовместимый ssh-peer (нет приемлемого алгоритма kex)
Я получаю следующую ошибку при попытке ssh подключиться к устройству Cisco ACS с использованием библиотеки paramiko. Я использовал paramiko в python без проблем, и я могу использовать ssh в этом поле из командной строки или без шпатлевки без проблем. Я включил отладку и скопировал информацию здесь. Пожалуйста, дайте мне знать, если вы можете мне помочь.
import paramiko
import sys
import socket
try:
paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)
sshConnection = paramiko.SSHClient()
sshConnection.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshConnection.connect('server',username='username',password='password')
except paramiko.BadAuthenticationType:
sys.stdout.write('Bad Password!\n')
sys.exit()
except paramiko.SSHException, sshFail:
sys.stdout.write('Connection Failed!\n')
sys.stdout.write('%s\n' % sshFail)
sys.exit()
except socket.error, socketFail:
sys.stdout.write('Failed to open socket\n')
sys.stdout.write('%s\n' % socketFail)
sys.exit()
и возвращается результат отладки:
DEBUG:paramiko.transport:starting thread (client mode): 0x14511d0L
INFO:paramiko.transport:Connected (version 2.0, client OpenSSH_5.3)
DEBUG:paramiko.transport:kex algos:['diffie-hellman-group14-sha1'] server key:['ssh-rsa'] client encrypt:['aes256-cbc', 'aes128-cbc', '3des-cbc'] server encrypt:['aes256-cbc', 'aes128-cbc', '3des-cbc'] client mac:['hmac-sha1'] server mac:['hmac-sha1'] client compress:['none', '[email protected]'] server compress:['none', '[email protected]'] client lang:[''] server lang:[''] kex follows?False
ERROR:paramiko.transport:Exception: Incompatible ssh peer (no acceptable kex algorithm)
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "build\bdist.win32\egg\paramiko\transport.py", line 1546, in run
ERROR:paramiko.transport: self._handler_table[ptype](self, m)
ERROR:paramiko.transport: File "build\bdist.win32\egg\paramiko\transport.py", line 1618, in _negotiate_keys
ERROR:paramiko.transport: self._parse_kex_init(m)
ERROR:paramiko.transport: File "build\bdist.win32\egg\paramiko\transport.py", line 1731, in _parse_kex_init
ERROR:paramiko.transport: raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)')
ERROR:paramiko.transport:SSHException: Incompatible ssh peer (no acceptable kex algorithm)
ERROR:paramiko.transport:
Connection Failed!
Incompatible ssh peer (no acceptable kex algorithm)
Я убедился, что у меня установлены самые последние версии pycrypto и paramiko.
Ответы
Ответ 1
У меня была аналогичная проблема с Debian 8 и OpenSSH на стороне сервера.
В качестве быстрого исправления следующие параметры Cipher/MACs/KexAlgorithms на стороне сервера устраняют проблему:
В /etc/ssh/sshd _config:
Ciphers [email protected],[email protected],aes256-ctr,aes128-ctr
MACs [email protected],[email protected],[email protected],hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,hmac-sha1
KexAlgorithms diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
Хотя... вы должны проанализировать эти настройки с точки зрения безопасности. Я установил его в лаборатории env, поэтому не позаботился об этом.
Также не уверен, что вы можете изменить его таким образом для Cisco ACS
Ответ 2
Я обновил paramiko, чтобы устранить проблему:
sudo pip install paramiko --upgrade
Моя обновленная версия paramiko:
paramiko==2.0.2
Ответ 3
В случае, если у кого-то еще есть эта проблема даже после обновления с помощью pip install paramiko --upgrade
, убедитесь, что у вас нет paramiko, установленного в системе, потому что он будет загружен перед пипсом, вы можете проверить его с помощью dpkg -l | grep paramiko
, если он установлен, удалите его и установите через pip.
Ответ 4
Для меня я обновил версию paramiko и решил все. В частности, я изначально установил paramiko через пакет python-paramiko Ubuntu 14.04 и заменил его последним использованием pip (1.10 → 1.16).
Ответ 5
Я получал следующую ошибку при попытке ssh на устройство Aruba с использованием paramiko:
paramiko.ssh_exception.SSHException: Несовместимый ssh-peer (нет приемлемого алгоритма kex)
Выполнение обновления paramiko разрешило эту проблему:
sudo pip install paramiko --upgrade
Ответ 6
Это может не помочь ситуации ОП, но, надеюсь, это может помочь кому-то другому с той же ошибкой.
Я столкнулся с ситуацией, когда один script мог бы SSH в систему просто отлично, но другой подобный script потерпел неудачу с тем же
paramiko.SSHException: Incompatible ssh peer (no acceptable kex algorithm)
ошибка.
Ситуация оказалась линией shebang в верхней части моего script:
#!/usr/bin/python
Не удалось, а
#!/usr/bin/env python
будет успешным.
Я использую virtualenvs в своей системе, поэтому неудачная версия /usr/bin/python
использовала более старую версию Paramiko, установленную в системе, тогда как версия /usr/bin/env python
использовала новую установку Paramiko в моем virtualenv.
Ответ 7
Эта ошибка возникает в ситуации, когда ваша версия paramiko не поддерживает алгоритмы обмена ключами, которые используют устройство, которое вы хотите подключить.
ssh.connect('10.119.94.8', 22, username="user",password='passwor')
t = ssh.get_transport()
so = t.get_security_options()
so.kex
('diffie-hellman-group1-sha1', 'diffie-hellman-group-exchange-sha1')
so.ciphers
('aes128-ctr', 'aes256-ctr', 'aes128-cbc', 'blowfish-cbc', 'aes256-cbc', '3des-cbc', 'arcfour128', 'arcfour256')
paramiko.__version__
'1.10.1'
В журналах paramiko вы можете увидеть ключи для обмена ключами вашего соединения.
DEB paramiko.transport: starting thread (client mode): 0x11897150L
INF paramiko.transport: Connected (version 2.0, client OpenSSH_7.2)
DEB paramiko.transport: kex algos:['diffie-hellman-group14-sha1', 'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384'] server key:['ssh-rsa'] client encrypt:['aes128-ctr', 'aes256-ctr'] server encrypt:['aes128-ctr', 'aes256-ctr'] client mac:['hmac-sha1'] server mac:['hmac-sha1'] client compress:['none', '[email protected]'] server compress:['none', '[email protected]'] client lang:[''] server lang:[''] kex follows?False
ERR paramiko.transport: Exception: Incompatible ssh peer (no acceptable kex algorithm)
ERR paramiko.transport: Traceback (most recent call last):
ERR paramiko.transport: raise SSHException('Incompatible ssh peer (no acceptable kex algorithm)')
ERR paramiko.transport: SSHException: Incompatible ssh peer (no acceptable kex algorithm)
Поэтому я рекомендую обновить до последней версии paramiko, например 2.4.2 на 2018 год. В этой версии поддерживается sha1 и sha2 для алгоритмов обмена ключами.
>>> ssh.connect("hostdev",22,username="user",password="pass")
>>> transport1=ssh.get_transport()
>>> so=transport1.get_security_options()
>>> so.kex
('ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', 'ecdh-sha2-nistp521', 'diffie-hellman-group-exchange-sha256', 'diffie-hellman-group-exchange-sha1', 'diffie-hellman-group14-sha1', 'diffie-hellman-group1-sha1')
>>>
>>> so.ciphers
('aes128-ctr', 'aes192-ctr', 'aes256-ctr', 'aes128-cbc', 'aes192-cbc', 'aes256-cbc', 'blowfish-cbc', '3des-cbc')
>>>
>>> print paramiko.__version__
2.4.2