5

解决使用RSA密钥无法登录|key type ssh-rsa not in PubkeyAcceptedAlgorithms

 1 year ago
source link: https://vpsxb.net/3950/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

当您使用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连接方式的更多信息,请参见连接方式概述
  • 方案三:运行以下命令,在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

终极解决办法

重新生成能用的密钥

ssh-keygen -t ecdsa

生成完后导入了腾讯云的 SSH 密钥(文件在:~/.ssh)

这时候问题又来了,finalshell 提示:

暂不支持此私钥格式,请参考以下方法解决:
1.转换成PEM格式私钥
ssh-keygen -p -m PEM -f 私钥路径
2.生成PEM格式的私钥
生成时增加 -m PEM参数
ssh-keygen -m PEM -t rsa -C "注释"

于是我用这个把私钥转换了一下(注意会覆盖原文件,如有需要先备份)

ssh-keygen -p -m PEM -f id_ecdsa

用 finalshell 导入转换后的私钥,成功连接到了服务器!


https://help.aliyun.com/document_detail/460037.html

https://cloud.tencent.com/developer/article/2069157


VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK