配置服务器集群SSH免登录时遇到的PUBKEYACCEPTEDALGORITHMS问题
遇到的第一个问题: 无法使用RSA密钥登录
在SSH协议中,ssh-rsa签名算法是SHA1的哈希算法和RSA公钥算法的结合使用。由于目前SHA1的哈希算法容易受到攻击,OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名方案。
说明:
默认不支持ssh-rsa签名方案并不意味着停止使用RSA密钥,密钥可以通过多种算法进行签名,RSA密钥可以使用rsa-sha2-256(rsa/SHA256)、rsa-sha2-512(rsa/SHA512)等多种签名算法来进行签名,只有ssh-rsa(rsa/SHA1)签名算法被默认禁用。
问题现象:
使用FinalShell、nuoshell等部分SSH客户端软件通过RSA密钥远程连接ECS实例时,SSH客户端提示登录失败,sshd服务日志提示如下:
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
问题原因:
在最新版本的操作系统中,OpenSSH默认不再支持ssh-rsa(rsa/SHA1)签名算法,如果指定使用ssh-rsa(rsa/SHA1)签名算法将会登录失败。由于FinalShell、nuoshell等部分SSH客户端软件默认仅支持使用ssh-rsa(rsa/SHA1)签名算法,不能兼容使用rsa-sha2-256(rsa/SHA256)或者rsa-sha2-512(rsa/SHA512),所以无法登录。
解决方案:
您可以通过以下任一种方案解决该问题:
方案一:使用ECDSA或者DSA等其他加密方式。
方案二:使用其他SSH客户端进行登录,例如阿里云自带的Workbench。关于Workbench连接方式的更多信息,请参见使用Workbench连接实例。
方案三:运行以下命令,在sshd配置中允许使用ssh-rsa(rsa/SHA1)的签名算法。
由于ssh-rsa(rsa/SHA1)签名算法并不安全,请您谨慎操作。
echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config
systemctl restart sshd
最终优先方案
即然 rsa-sha1 不能用了, 那就要换一种更安全的方式吧.
# ssh-keygen -t rsa -C "hugo@dev" # rsa-sha1 加密方式
ssh-keygen -t ed25519 -C "hugo@dev" # ED25519 加密方式
配置服务器集群SSH免登录时遇到的PUBKEYACCEPTEDALGORITHMS问题