10月15, 2017

SSH登录旧设备的常见问题及解决方案

ssh登录一些老旧设备,常出现以下问题,本文列出几个常见问题及解决方案 :

1、错误类型:"no matching key exchange method found"

错误提示:

Unable to negotiate with xx.xx.xx.xx port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

解决方案:

在ssh命令中添加以下内容:

-oKexAlgorithms=+diffie-hellman-group1-sha1

2、错误类型:"no matching host key type found"

错误提示:

Unable to negotiate with xx.xx.xx.xx port 22: no matching host key type found. Their offer: ssh-dss

解决方案:

在ssh命令中添加以下内容:

-oHostKeyAlgorithms=+ssh-dss

3、错误类型:"no matching cipher found"

错误提示:

Unable to negotiate with xx.xx.xx.xx port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

解决方案: 在ssh命令中添加以下命令:

-oCiphers=+aes128-cbc

上述解决方案都是临时解决方案,想要永久性解决方案请自行搜索,这三个问题中,其中问题3出现的次数最多,这里给出问题3的永久性解决方案

4、问题3的永久性解决方案

①、列出本地ssh支持的所有ciphers

使用命令行:

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

②、根据问题3中的错误提示得到服务器支持的ciphers

错误提示如下:

Unable to negotiate with xx.xx.xx.xx port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

得到服务器支持的ciphers列表:

aes128-cbc
3des-cbc
blowfish-cbc
cast128-cbc
arcfour
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se

③、对比步骤①和②,得到同时支持的ciphers

对比得到同时支持的ciphers如下:

3des-cbc
aes128-cbc
aes192-cbc
aes256-cbc
rijndael-cbc@lysator.liu.se

可以看到本机ssh和该ssh服务器所同时支持的ciphers有5个,接下来可以修改本机ssh,使本机使用这五个中的任意一个连接ssh服务器

④、修改本机ssh设置

使用命令行:

sudo vi /etc/ssh/ssh_config

修改"ssh_config"文件的第38行,去掉最前面的"#"注释,并修改内容为步骤③得到的五个双支持的ciphers,修改结果如下:

Ciphers 3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se

保存,退出,这样使用ssh命令时不用添加"-oCiphers=+aes128-cbc"也可直接连接ssh服务器了,不过为了使本机支持更多ssh服务器的ciphers,可以将"ssh_config"中的Ciphers修改为本机所有支持的Ciphers,

⑤、修改ssh设置的Ciphers为本机所有支持的Ciphers

根据步骤①得到的结果进行修改,修改完的内容如下:

Ciphers 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

这样修改之后,就包括了新旧设备大部分支持的Ciphers,就不需要担心再出现错误3的提示了。

本文链接:https://www.shaobin.wang/post/6.html

Comments