Python 致命错误:ssh对等点不兼容(没有可接受的kex算法)

Python 致命错误:ssh对等点不兼容(没有可接受的kex算法),python,openssl,fabric,paramiko,Python,Openssl,Fabric,Paramiko,在主机“a-stor1”上运行fabric python API并看到“致命错误:不兼容的ssh对等(没有可接受的kex算法)”,但在“rack1-app1”上工作正常。我能看到的唯一区别是“rack1-app1”运行的是openssl 1.0.1-4ubuntu5.3,“a-stor1”运行的是1.0.1-4ubuntu5.21 Brians-MacBook-Pro:initial bohalloran$ python tests/test_fabric.py [rack1-app1] Ex

在主机“a-stor1”上运行fabric python API并看到“致命错误:不兼容的ssh对等(没有可接受的kex算法)”,但在“rack1-app1”上工作正常。我能看到的唯一区别是“rack1-app1”运行的是openssl 1.0.1-4ubuntu5.3,“a-stor1”运行的是1.0.1-4ubuntu5.21

Brians-MacBook-Pro:initial bohalloran$ python tests/test_fabric.py 
[rack1-app1] Executing task 'testIt'
[rack1-app1] run: uptime
[rack1-app1] out: 13:07:43 up 24 days, 19:18, 1 user, load average: 0.07, 0.05, 0.05
[rack1-app1] out:

[a-stor1] Executing task 'testIt'
[a-stor1] run: uptime
ERROR:paramiko.transport:Exception: Incompatible ssh peer (no acceptable kex algorithm)
ERROR:paramiko.transport:Traceback (most recent call last):
ERROR:paramiko.transport: File "/Library/Python/2.7/site-packages/paramiko/transport.py", line 1614, in run
ERROR:paramiko.transport: self._handler_tableptype
ERROR:paramiko.transport: File "/Library/Python/2.7/site-packages/paramiko/transport.py", line 1694, in _negotiate_keys
ERROR:paramiko.transport: self._parse_kex_init(m)
ERROR:paramiko.transport: File "/Library/Python/2.7/site-packages/paramiko/transport.py", line 1809, 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:

Fatal error: Incompatible ssh peer (no acceptable kex algorithm)

Underlying exception:
Incompatible ssh peer (no acceptable kex algorithm)

Aborting.
Incompatible ssh peer (no acceptable kex algorithm)

Underlying exception:
Incompatible ssh peer (no acceptable kex algorithm)
Brians-MacBook-Pro:initial bohalloran$ cat tests/test_fabric.py 
from fabric.api import env, run, prefix, hide, settings
from fabric import tasks
import logging

env.hosts = ['rack1-app1', 'a-stor1']
env.user = 'storiant'
env.password = 'ST0r!ant'

logging.basicConfig()

cmd = 'uptime'

def main():
tasks.execute(testIt)

def testIt():
with settings(warn_only = True):
run(cmd)

if name == "main":
main()
Brians-MacBook-Pro:initial bohalloran$

Brians-MacBook-Pro:initial bohalloran$ python
Python 2.7.6 (default, Sep 9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

import paramiko
print paramiko.version
1.15.2
^D
Brians-MacBook-Pro:initial bohalloran$
Brians-MacBook-Pro:initial bohalloran$ openssl version
OpenSSL 0.9.8zd 8 Jan 2015
Brians-MacBook-Pro:initial bohalloran$

storiant@Rack1-app1:~$ openssl version
OpenSSL 1.0.1 14 Mar 2012
storiant@Rack1-app1:~$

storiant@a-stor1:~$ openssl version
OpenSSL 1.0.1 14 Mar 2012
storiant@a-stor1:~$

storiant@a-stor1:~$ dpkg -l | grep libgnutls
ii libgnutls26 2.12.14-5ubuntu3.1 GNU TLS library - runtime library
storiant@a-stor1:~$ dpkg -l | grep openssl
ii libevent-openssl-2.0-5 2.0.16-stable-1ubuntu0.1 Asynchronous event notification library (openssl)
ii openssl 1.0.1-4ubuntu5.21 Secure Socket Layer (SSL) binary and related cryptographic tools
storiant@a-stor1:~$

storiant@Rack1-app1:~$ dpkg -l | grep libgnutls
ii libgnutls26 2.12.14-5ubuntu3.1 GNU TLS library - runtime library
storiant@Rack1-app1:~$ dpkg -l | grep openssl
ii libevent-openssl-2.0-5 2.0.16-stable-1 Asynchronous event notification library (openssl)
ii openssl 1.0.1-4ubuntu5.3 Secure Socket Layer (SSL) binary and related cryptographic tools
storiant@Rack1-app1:~$

storiant@Rack1-app1:~$ uname -a
Linux Rack1-app1 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
storiant@Rack1-app1:~$

storiant@a-stor1:~$ uname -a
Linux a-stor1 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 17:37:58 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
storiant@a-stor1:~$
  • 下载python-paramiko_1.15.1-1_all.deb(v1.15.1及更高版本)
  • dpkg-i python-paramiko_1.15.1-1_all.deb
  • 如果上述安装提示以下错误- “python paramiko依赖于python ecdsa;但是: 未安装包python ecdsa。“

    然后,按照以下步骤安装ecdsa

  • 下载ecdsa-0.13.tar.gz(ecdsa的最新版本)
  • untar ecdsa-0.13.tar.gz
  • cd ecdsa-0.13
  • python setup.py安装

  • 升级fabric为我解决了这个问题(
    pip——升级fabric

    堆栈溢出是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。另请参阅。检查答案,我认为该命令实际上是
    pip install--upgrade fabric