web-dev-qa-db-fra.com

paramiko Incompatible peer ssh (pas d'algorithme kex acceptable)

L'erreur suivante s'affiche lorsque j'essaie de ssh sur un périphérique Cisco ACS à l'aide de la bibliothèque paramiko. J'ai utilisé paramiko en python sans problème et je peux utiliser ssh pour cette boîte à partir de la ligne de commande ou utiliser PuTTY sans problème. J'ai activé le débogage et copié les informations ici. S'il vous plaît laissez-moi savoir si vous pouvez m'aider.

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

et la sortie de débogage renvoyée:

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)

Je me suis assuré d'avoir les versions les plus récentes de pycrypto et paramiko installées.

20
Tony

J'avais un problème similaire avec Debian 8 et OpenSSH côté serveur.

Pour résoudre rapidement le problème, les paramètres Cipher/MACs/KexAlgorithms suivants sur le serveur permettent de résoudre le problème:

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

Bien que ... vous devriez analyser ces paramètres du point de vue de la sécurité. Je l'ai mis dans l'environnement de laboratoire, alors je ne m'en suis pas occupé.

Aussi pas sûr si vous pouvez le modifier de cette manière pour Cisco ACS

18
wisnia

J'ai mis à jour le paramiko pour résoudre le problème:

 Sudo pip install paramiko --upgrade

Ma version mise à jour de paramiko est: 

paramiko==2.0.2

14
Romaan

L'erreur suivante apparaissait lorsque j'essayais de ssh sur un périphérique Aruba en utilisant paramiko:

paramiko.ssh_exception.SSHException: homologue ssh incompatible (aucun algorithme kex acceptable)

Faire une mise à jour de paramiko a résolu ce problème: 

Sudo pip install paramiko --upgrade
1
Modo

Pour moi, j'ai mis à jour la version de paramiko et cela a résolu le problème. Plus précisément, j’ai initialement installé paramiko via le paquet python-paramiko Ubuntu 14.04 et l’a remplacé par le dernier en utilisant pip (1.10 -> 1.16).

1
badnews

Cela n’aidera peut-être pas la situation du PO, mais espérons que cela pourra aider quelqu'un d’autre avec la même erreur.

J'ai rencontré une situation dans laquelle un script SSH s'intégrait parfaitement dans un système, mais un autre script similaire échouait avec le même problème.

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

erreur.

La situation s'est avérée être la ligne Shebang en haut de mon script:

#!/usr/bin/python

Échouerait, alors que

#!/usr/bin/env python

réussirait.

J'utilise virtualenvs sur mon système, donc la version /usr/bin/python défaillante utilisait l'ancienne version de Paramiko installée sur le système, alors que la version /usr/bin/env python utilisait l'installation plus récente de Paramiko dans virtualenv.

0
JS.

Cette erreur se produit lorsque votre version de paramiko ne prend pas en charge les algorithmes d’échange de clés utilisant le périphérique que vous souhaitez connecter.

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'

Dans les journaux de paramiko, vous pouvez voir les algorithmes d’échange de clés de votre connexion.

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)

Je recommande donc de passer à une version récente de paramiko, par exemple 2.4.2 pour 2018. Dans cette version, sont pris en charge sha1 et sha2 pour les algorithmes d'échange de clés.

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