Sửa lỗi Unable to negotiatev no matching cipher found khi ssh vào Cisco
Khi bạn ssh từ hệ điều hành Ubuntu vào các thiết bị Cisco (thường xảy ra với các thiết bị Cisco đời cũ) có lỗi như ở dưới.
$ ssh admin@192.168.201.254
Unable to negotiate with 192.168.201.254 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Bạn có thể xử lý 1 trong 3 cách sau:
Cách 1: Gõ lệnhh ssh -Q cipher để show một số phương thức xác thực
$ ssh -Q cipher
3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se
aes128-ctr
aes192-ctr
aes256-ctr
aes128-gcm@openssh.com
aes256-gcm@openssh.com
chacha20-poly1305@openssh.com
Hãy lựa chọn 1 phương thức mà bạn muốn để thử, ví dụ 3des-cbc, sau đó ssh bằng lệnh dưới và chúng ta có kết quả.
$ ssh -c 3des-cbc admin@192.168.201.254
Password:
Phương án 1 sẽ mất thời gian vì mỗi lần mình ssh đều phải thực hiện truyền phương thức xác thực trước khi ssh, với cách 2 và các 3 các bạn chỉ cần làm 1 lần là được.
Cách 2: Mở file ~/.ssh/config
$ vi ~/.ssh/config
Thêm nội dung như dưới, nó chính là các phương thức xác thực được đề xuất
SendEnv LANG LC_*
Ciphers aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Và đây là kết quả
$ ssh admin@192.168.201.254
Password:
Cách 3: Mở file /etc/ssh/ssh_config
vi /etc/ssh/ssh_config
Bỏ comment dòng dưới
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
Restart lại dịch vụ ssh
$ systemctl restart ssh
Với Macos sử dụng lệnh dưới
ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
Và đây là kết quả
$ ssh admin@192.168.201.254
Password:
Lưu ý: Với phiên bản Mac Monterey trở lên nếu 3 cách trên không hiệu quả, hãy thử phương pháp dưới đây
$ ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-rsa admin@192.168.201.254
Warning: Permanently added '192.168.201.254' (RSA) to the list of known hosts.
(admin@192.168.201.254) Password:
Chúc các bạn thành công