由于工作需要,有九台服务器需要对起openssh升级,在升级成功之后,无法登录,花了很多时间在网上找资料,具体解决方法如下。
由于新的openssh采用了新的算法,所以想要连接服务器,必须使用最新的securecrt 或者是Xshell或者是其他工具。
当然也可以自己手动用老的算法生成私钥,公钥(公钥是从私钥里面抽取出来的)。
报错
key-exchange failed
No compatible hostkey.The server supports these methods: ssh-ed25519
解决方法:
1 首先清除服务器上的原来的公钥和私钥
rm -f /etc/ssh/ssh*key
2. 使用旧的算法生成私钥公钥
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
(这里使用了三种算法,只要客服端支持其中一种或者集中就可以)
以上步骤完成后,重启sshd服务,然后再登录(比如crt6.5)就行了。
附: ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ED25519_key ed25519是最新的算法,客服端不支持就没必要生成私钥。如果客服端为最新的,简直生成,比较速度和安全性都更高
本文转自 zfno11 51CTO博客,原文链接:http://blog.51cto.com/zfno111/1939945