Linux服务器我一直都是用的 ssh 远程管理的,最近遇到ssh不能远程登入问题,把问题和解决过程记录一下。
C:\Users\admin>ssh root@192.168.123.252
Unable to negotiate with 192.168.123.252 port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
还没到用户密码验证,直接就报错了,错误提示:
no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
先求助下度娘: 基本知道问题了,密匙交换算法不一致,根据错误提示,给出了支持的算法,选一种应该就可以吧。
加上 了 参数后
ssh root@192.168.123.252 -oKexAlgorithms=+diffie-hellman-group-exchange-sha1
又报了新的错误了。no matching host key type found. Their offer: ssh-rsa,ssh-dss
同理 报错里也给出了参数选择,只要找出参数名加上,应该就可以。
继续
ssh root@192.168.123.252 -oKexAlgorithms=+diffie-hellman-group-exchange-sha1 -oHostKeyAlgorithms=+ssh-rsa
又报了新的错误。 no matching MAC found. Their offer: hmac-md5,hmac-sha1,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
这个百度没找到,查了一下ssh命令帮助找到了。
继续
ssh root@192.168.123.252 -oKexAlgorithms=+diffie-hellman-group-exchange-sha1 -oHostKeyAlgorithms=+ssh-rsa -m hmac-md5
成了,到了输密码状态了。 正确输入密码,也能正常登入了。
但是每次如果都要输这么一大串,挺难受的,看上面解决过程中有提到可以在本地的 config 文件里配置这些参数的。
可以参考一下 ssh config 文件的具体说明。 我根据说明把这几项配置进去后,就正常能用了。