使用RSA密钥无法登录ECS实例问题
当您使用Ubuntu、CentOS Stream 9等操作系统的ECS实例,且通过RSA密钥在FinalShell、nuoshell等部分SSH客户端连接ECS实例时,可能出现登录失败的问题,您可以参考本文的操作进行解决。
背景信息
RSA加密算法是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。 非对称加密算法包含公钥(Public Key)和私钥(Private Key),公钥和私钥是一种通过算法得到的密钥对,在ECS中创建的密钥对默认采用RSA加密方式。更多信息,请参见SSH密钥对概述。
Ubuntu 22.04无法使用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
CentOS Stream 9等系统无法使用RSA密钥登录
涉及系统范围
-
CentOS Stream 9
-
AlmaLinux 9
-
Rocky Linux 9
-
Red Hat Enterprise Linux 9
-
Fedora 33及以上
问题现象
使用FinalShell、nuoshell等部分SSH客户端软件通过RSA密钥远程连接ECS实例时,SSH客户端提示登录失败,sshd服务日志提示:
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
问题原因
CentOS Stream 9系列系统在OS内部的crypto-policies策略默认为DEFAULT,在该策略模式下openssh-server禁用了ssh-rsa(rsa/SHA1)签名算法。由于FinalShell、nuoshell等部分SSH客户端软件默认仅支持使用ssh-rsa(rsa/SHA1)签名算法,不能兼容使用rsa-sha2-256(rsa/SHA256)或者rsa-sha2-512(rsa/SHA512),所以无法登录。
您可以通过update-crypto-policies --show
命令查看当前系统的策略。
解决方案
您可以通过以下任一种方案解决该问题:
-
方案一:使用ECDSA或者DSA等其他加密方式。
-
方案二:使用其他SSH客户端进行登录,例如阿里云自带的Workbench。关于Workbench连接方式的更多信息,请参见连接方式概述。
-
方案三:运行以下命令,切换策略为LEGACY。
LEGACY策略模式可能存在未知安全隐患,请您谨慎操作。
update-crypto-policies --set LEGACY update-crypto-policies --show
没有啦 (T▽T)
延伸阅读:
使用RSA密钥无法登录ECS实例问题
当您使用Ubuntu、CentOS Stream 9等操作系统的ECS实例,且通过RSA密钥在FinalShell、nu...