web-dev-qa-db-ja.com

paramiko互換性のないsshピア(許容されるkexアルゴリズムはありません)

Paramikoライブラリを使用してCisco ACSデバイスにSSH接続しようとすると、次のエラーが発生します。 pythonで問題なくparamikoを使用しました。コマンドラインからこのボックスに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', '[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の最新バージョンがインストールされていることを確認しました。

23
Tony

サーバー側の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

ただし...セキュリティの観点からこれらの設定を分析する必要があります。私はそれをラボ環境で設定したので、気にしませんでした。

また、この方法でCisco ACSを変更できるかどうかもわかりません

20
wisnia

私は問題を修正するためにparamikoをアップグレードしました:

 Sudo pip install paramiko --upgrade

私の更新したparamikoは次のとおりです。

paramiko==2.0.2

16
Romaan

pip install paramiko --upgradeを使用してアップグレードした後でもまだこの問題が発生している場合は、paramikoがシステム全体にインストールされていないことを確認してください。pipの前に読み込まれるため、dpkg -l | grep paramikoで確認できます。インストールされている場合は削除して、ピップを介してインストールします。

2
David Garaña

Paramikoを使用してArubaデバイスにSSH接続しようとすると、次のエラーが発生しました。

paramiko.ssh_exception.SSHException:互換性のないsshピア(受け入れ可能なkexアルゴリズムなし)

Paramikoのアップグレードを行うと、この問題が解決しました。

Sudo pip install paramiko --upgrade
1
Modo

私にとっては、paramikoのバージョンをアップグレードしたところ、問題が解決しました。具体的には、最初にUbuntu 14.04 python-paramikoパッケージを介してparamikoをインストールし、pip(1.10-> 1.16)を使用して最新のものに置き換えました。

1
badnews

これはOPの状況に役立つことはありませんが、うまくいけば、同じエラーを持つ他の誰かを助けるかもしれません。

1つのスクリプトがシステムに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バージョンは、私のvirtualenvで新しいParamikoインストールを使用していました。

0
JS.

そのエラーは、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)

したがって、2018年の2.4.2など、最新のparamikoバージョンにアップグレードすることをお勧めします。このバージョンでは、鍵交換アルゴリズムで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
jocmtb