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