摘要:最近ssh远程服务器时,出现"Algorithm negotiation fail"问题,这里记录一下解决办法。

原因

OpenSSH 7.0以后的版本默认不再支持ssh-rsa(rsa/SHA1)和ssh-dss(DSA/SHA1) 签名算法,如果指定使用ssh-rsa(rsa/SHA1)和ssh-dss (DSA/SHA1)签名算法将会登录失败。由于FinalShell、Nuoshell、Securecrt等部分SSH客户端软件默认仅支持使用ssh-rsa(rsa/SHA1)或ssh-dss (DSA/SHA1)算法,不能兼容使用 rsa-sha2-256(rsa/SHA256) 或者 rsa-sha2-512(rsa/SHA512) ,所以无法登录。

解决办法

第一种解决办法

更新你使用的ssh客户端工具,更新成最新版本。

第二种解决办法

首先登录到linux服务器上,然后运行下面命令

cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config_bak
echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config
echo 'HostKeyAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config
service sshd restart

然后试着用ssh客户端工具看下能不能远程上。如果远程不上,换下面的命令试试。

cp -a /etc/ssh/sshd_config_bak /etc/ssh/sshd_config 
echo 'PubkeyAcceptedKeyTypes=+ssh-dss' >> /etc/ssh/sshd_config
echo 'HostKeyAlgorithms=+ssh-dss' >> /etc/ssh/sshd_config
service sshd restart