Paramiko Несовместимый ssh ​​peer (без приемлемого алгоритма kex) - PullRequest
21 голосов
/ 02 сентября 2011

Я получаю следующую ошибку при попытке ssh подключиться к устройству Cisco ACS с помощью библиотеки paramiko. Я использовал Paramiko в Python без проблем, и я могу SSH для этого окна из командной строки, или используя Putty без проблем. Я включил отладку и скопировал информацию здесь. Пожалуйста, дайте мне знать, если вы можете мне помочь.

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', 'zlib@openssh.com'] server compress:['none', 'zlib@openssh.com'] 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.

Ответы [ 7 ]

18 голосов
/ 21 сентября 2015

У меня была похожая проблема с Debian 8 и OpenSSH на стороне сервера.

В качестве быстрого исправления, следующие настройки Cipher / MACs / KexAlgorithms на стороне сервера решают проблему:

В / etc / ssh / sshd_config:

Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes128-ctr
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,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

Хотя ... вы должны проанализировать эти настройки с точки зрения безопасности. Я установил это в лаборатории, поэтому не позаботился об этом.

Также не уверен, что вы можете изменить его таким образом для Cisco ACS

14 голосов
/ 09 сентября 2016

Я обновил Paramiko для решения проблемы:

 sudo pip install paramiko --upgrade

Моя обновленная версия Paramiko:

paramiko==2.0.2

2 голосов
/ 30 июня 2017

Если у кого-то еще возникла эта проблема даже после обновления с использованием pip install paramiko --upgrade, убедитесь, что у вас не установлена ​​система paramiko в масштабе всей системы, потому что она будет загружена раньше pip, вы можете проверить ее с помощью dpkg -l | grep paramiko, если он установлен, удалите его и установите через pip.

1 голос
/ 16 января 2017

Я получаю следующую ошибку при попытке выполнить ssh на устройстве Aruba с помощью paramiko:

paramiko.ssh_exception.SSHException: несовместимый одноранговый узел ssh (без приемлемого алгоритма kex)

Обновление paramiko решило эту проблему:

sudo pip install paramiko --upgrade
1 голос
/ 27 апреля 2016

Для меня я обновил версию paramiko, и это помогло. В частности, я изначально установил paramiko с помощью пакета python-paramiko Ubuntu 14.04 и заменил его последним, используя pip (1.10 -> 1.16).

0 голосов
/ 07 декабря 2018

Эта ошибка возникает в ситуации, когда ваша версия 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', 'zlib@openssh.com'] server compress:['none', 'zlib@openssh.com'] 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
0 голосов
/ 11 февраля 2016

Это может не помочь ситуации ОП, но, надеюсь, это может помочь кому-то еще с той же ошибкой.

Я столкнулся с ситуацией, когда один сценарий просто SSH в систему, но другой аналогичный сценарий будетошибка с той же

paramiko.SSHException: Incompatible ssh peer (no acceptable kex algorithm)

ошибкой.

Ситуация оказалась строкой Шебанга в верхней части моего скрипта:

#!/usr/bin/python

Сбой, в то время как

#!/usr/bin/env python

будет успешным.

Я использую virtualenvs в моей системе, поэтому в версии /usr/bin/python использовалась более старая версия Paramiko, установленная в системе, тогда как /usr/bin/env pythonверсия использовала более новую установку Paramiko в моем virtualenv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...