it-swarm.com.de

paramiko Inkompatibler SSH-Peer (kein akzeptabler Kex-Algorithmus)

Ich erhalte die folgende Fehlermeldung, wenn ich versuche, ein Cisco ACS-Gerät mithilfe der paramiko-Bibliothek zu ssh zu senden. Ich habe paramiko ohne Probleme in Python verwendet, und ich kann SSH von der Kommandozeile aus in dieses Feld einbinden oder PuTTY ohne Problem verwenden. Ich habe das Debuggen eingeschaltet und die Informationen hier kopiert. Bitte lassen Sie mich wissen, ob Sie mir helfen können.

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

und die Debug-Ausgabe zurückgegeben:

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)

Ich habe sichergestellt, dass ich die neuesten Versionen von Pycrypto und Paramiko installiert habe.

20
Tony

Ich hatte ein ähnliches Problem mit Debian 8 und OpenSSH auf der Serverseite.

Als schnelle Lösung beheben die folgenden Cipher/MACs/KexAlgorithms-Einstellungen auf der Serverseite das Problem:

In/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

Allerdings ... sollten Sie diese Einstellungen unter Sicherheitsaspekten analysieren. Ich habe es in lab env eingestellt, also habe ich mich nicht darum gekümmert.

Sie sind sich auch nicht sicher, ob Sie sie für Cisco ACS auf diese Weise ändern können

18
wisnia

Ich habe das Paramiko aktualisiert, um das Problem zu beheben:

 Sudo pip install paramiko --upgrade

Meine aktualisierte Version von paramiko ist: 

paramiko==2.0.2

14
Romaan

Falls dieses Problem auch bei einem anderen Benutzer nach dem Upgrade mit pip install paramiko --upgrade weiterhin auftritt, stellen Sie sicher, dass Sie nicht paramiko installiert haben, da es vor den Pip-Dateien geladen wird. Sie können es mit dpkg -l | grep paramiko überprüfen. Wenn es installiert ist, entfernen Sie es und durch rohr installieren.

2
David Garaña

Ich habe die folgende Fehlermeldung erhalten, als ich versuchte, mit einem Paramiko auf ein Aruba-Gerät zu wechseln:

paramiko.ssh_exception.SSHException: Inkompatibler ssh-Peer (kein akzeptabler Kex-Algorithmus)

Durch ein Upgrade von paramiko wurde dieses Problem behoben: 

Sudo pip install paramiko --upgrade
1
Modo

Für mich habe ich die Version von paramiko aufgerüstet und die Probleme gelöst. Ich habe paramiko ursprünglich über das Python-paramiko-Paket von Ubuntu 14.04 installiert und durch das neueste using pip (1.10 -> 1.16) ersetzt.

1
badnews

Dies kann der Situation des OP nicht helfen, aber hoffentlich kann es jemand anderen mit dem gleichen Fehler helfen.

Ich bin in eine Situation geraten, in der ein Skript SSH in ein System hineinführen würde, aber ein ähnliches Skript würde mit dem gleichen fehlschlagen

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

error.

Die Situation stellte sich als die Shebang-Linie am Anfang meines Drehbuchs heraus:

#!/usr/bin/python

Würde scheitern, während

#!/usr/bin/env python

würde gelingen.

Ich verwende virtualenvs auf meinem System, daher verwendete die fehlerhafte /usr/bin/python-Version die auf dem System installierte ältere Paramiko-Version, während die /usr/bin/env python-Version die neuere Paramiko-Installation in meiner virtualenv verwendete.

0
JS.

Dieser Fehler tritt auf, wenn Ihre Version von Paramiko die Algorithmen für den Schlüsselaustausch nicht unterstützt, die das zu verbindende Gerät verwenden.

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'

In den paramiko-Protokollen sehen Sie die Schlüsselaustauschalgos Ihrer Verbindung.

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)

Daher empfehle ich ein Upgrade auf eine aktuelle paramiko-Version, zum Beispiel 2.4.2 für 2018. In dieser Version werden sha1 und sha2 für Schlüsselaustauschalgorithmen unterstützt.

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