在SSH协议中,ssh-rsa签名算法是SHA1的哈希算法和RSA公钥算法的结合使用。由于目前SHA1的哈希算法容易受到攻击,OpenSSH从8.7以后版本开始默认不支持ssh-rsa签名方案。 https://help.aliyun.com/zh/ecs/user-guide/resolve-an-rsa-key-based-connection-failure-to-an-instance
Debian/Ubuntu
echo 'PubkeyAcceptedAlgorithms=+ssh-rsa' >> /etc/ssh/sshd_config
systemctl restart sshd
# 1)打开配置文件
vim /etc/ssh/sshd_config.d/enable_rsa_keys.conf
# 2)添加以下内容
HostKeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
# 3)重启SSH服务
service ssh restart
Rocky/Centos
涉及系统范围
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
openEuler
#1)打开配置文件
vim /etc/ssh/sshd_config
#2)找到PubkeyAcceptedKeyTypes与HostKeyAlgorithms
#3)在这2行添加以下内容
ssh-rsa