新版Linux开启SSH的RSAKey登录

作者:waMoYu 发布时间: 2024-10-24 阅读量:30 评论数:0

在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


评论