2011-09-02 29 views
16

Tôi nhận được lỗi sau khi cố gắng ssh tới thiết bị Cisco ACS bằng thư viện paramiko. Tôi đã sử dụng paramiko trong python mà không có vấn đề, và tôi có thể ssh đến hộp này từ dòng lệnh, hoặc sử dụng putty mà không có vấn đề. Tôi đã bật gỡ lỗi và sao chép thông tin ở đây. Vui lòng cho tôi biết nếu bạn có thể giúp tôi.paramiko Không tương thích ssh peer (không có thuật toán kex được chấp nhận)

import paramiko 
import sys 

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

và kết xuất debug trả về:

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) 

Tôi đã thực hiện chắc chắn tôi có phiên bản mới nhất của pycrypto và paramiko cài đặt.

+4

Bạn là ai DenverCoder9 ... Bạn đã thấy gì ?! – BizNuge

+0

Đối với tôi, 'sudo easy_install paramiko' đã khắc phục được sự cố. Thuật toán trao đổi khóa (kex) có thể là cài đặt sshd mà bạn có thể thay đổi? – Justin

+2

@BizNuge nếu bạn vẫn gặp sự cố này, hãy kiểm tra câu trả lời bên dưới từ wisnia đã sửa nó cho tôi. Tôi đã chỉnh sửa bài đăng để dễ dàng cắt và dán. –

Trả lời

14

Tôi gặp sự cố tương tự với Debian 8 và OpenSSH ở phía máy chủ.

Như một sửa chữa nhanh chóng, Cipher/MAC/KexAlgorithms cài đặt sau ở phía máy chủ sửa chữa vấn đề:

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

Mặc dù ... bạn nên phân tích các cài đặt đó từ quan điểm bảo mật. Tôi đặt nó trong phòng thí nghiệm env, vì vậy đã không chăm sóc về nó.

Cũng không chắc chắn nếu bạn có thể sửa đổi nó theo cách này cho Cisco ACS

+0

wisnia, cảm ơn bạn cho điều này - ngay cả sau khi nâng cấp paramiko Tôi đã có cùng một vấn đề, nhưng bằng cách sử dụng các thiết lập của bạn (có vẻ đủ an toàn để sử dụng) đã giải quyết được vấn đề của tôi. –

+0

Bạn có thể giải thích những gì bạn đang làm ở đây chính xác không? – Daan

+0

Bổ sung tối thiểu vào/etc/ssh/sshd_config sẽ được yêu cầu là: "KexAlgorithms diffie-hellman-group-exchange-sha1". Tôi thực sự sử dụng danh sách ở trên và bắt đầu tước. Tuy nhiên, thuật toán không phải là an toàn nhất từ ​​quan điểm bảo mật như đã đề cập trong bài đăng gốc. –

1

này có thể không giúp tình hình của OP, nhưng hy vọng nó có thể giúp người khác với cùng một lỗi.

tôi chạy vào một tình huống mà một kịch bản sẽ SSH vào một hệ thống tốt, nhưng một kịch bản tương tự sẽ thất bại với cùng lỗi

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

.

Tình hình hóa ra là dòng công việc ở phía trên cùng của kịch bản của tôi:

#!/usr/bin/python 

sẽ thất bại, trong khi

#!/usr/bin/env python 

sẽ thành công.

Tôi đang sử dụng virtualenv trên hệ thống của mình, vì vậy phiên bản /usr/bin/python không sử dụng phiên bản cũ hơn được cài đặt trên hệ thống, trong khi phiên bản /usr/bin/env python đang sử dụng cài đặt Paramiko mới hơn trong virtualenv của tôi.

0

Đối với tôi, tôi đã nâng cấp phiên bản của paramiko và giải quyết mọi thứ. Cụ thể, ban đầu tôi đã cài đặt paramiko thông qua gói python-paramiko Ubuntu 14.04 và thay thế nó bằng pip mới nhất (1.10 -> 1.16).

11

tôi nâng cấp các paramiko để sửa chữa các vấn đề:

sudo pip install paramiko --upgrade 

phiên bản cập nhật của tôi về paramiko là:

paramiko==2.0.2

+1

Điều này đã hiệu quả đối với tôi trên hệ điều hành MacOS. –

+0

Điều này không thành công khi tôi thử. Cần một số phụ thuộc để xây dựng thành công các phụ thuộc của paramiko. Sau khi tất cả những gì tôi vẫn không thể kết nối - Tôi tin rằng phiên bản hiện tại của paramiko là quá mới cho hệ thống của tôi (Ubuntu 14.04) và không tương thích. Cuối cùng, tôi chạy 'sudo pip install paramiko == 1.16' và nó hoạt động. – jdhildeb

1

tôi đã nhận được báo lỗi sau khi cố gắng để ssh vào một thiết bị Aruba sử dụng paramiko:

paramiko.ssh_exception.SSHException: Incompatible ssh peer (Không có thuật toán KEX chấp nhận được)

Làm một paramiko nâng cấp giải quyết vấn đề này:

sudo pip install paramiko --upgrade 
2

Trong trường hợp bất cứ ai khác vẫn còn có vấn đề này ngay cả sau khi nâng cấp sử dụng pip install paramiko --upgrade, hãy chắc chắn bạn không có paramiko cài đặt hệ thống rộng, bởi vì nó sẽ được nạp trước các pip, bạn có thể kiểm tra nó với dpkg -l | grep paramiko, nếu nó được cài đặt loại bỏ nó và cài đặt thông qua pip.

Các vấn đề liên quan