SSH2 使用 PuttyGen 转换的工作密钥进行身份验证失败(由于 ssh-rsa 已弃用?)

SSH2 使用 PuttyGen 转换的工作密钥进行身份验证失败(由于 ssh-rsa 已弃用?)

我有一个使用 AWS 生成的密钥对进行身份验证的 EC2 实例。

使用 Putty,我可以通过提供 PPK 文件中的私钥来连接到实例。

当我尝试使用 SSH2(通过其中一个 NodeJs 包装器,例如通过“ssh2-sftp-client”模块)时,它会失败并出现错误:

getConnection: All configured authentication methods failed

实例上的 auth.log 报告,

sshd[1841]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

我知道 OpenSSH 已经弃用了 ssh-rsa,但我仍然不确定这里出了什么问题:

  • ssh-rsa 似乎有很多含义,而且似乎只有 SHA1 已被弃用。不过,正如 PuttyGen 所报告的那样,我的密钥是 SHA256,所以应该仍然有效,不是吗?
  • 如果我理解正确的话,从 ppk 更改为 pem 只会更改文件的布局和编码,而不会更改密钥值本身。如果 OpenSSH服务器是进行拒绝的人,为什么 Putty 可以正常工作?

从 PPK 转换为 PEM 会改变密钥的类型吗?如果会,我该如何将 PPK 转换为 PEM,而不是 ssh-rsa?

SSH(服务器)版本是OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022

-- 编辑,因为我还不能发表评论 --

@Tanjin Alam 的回答是正确的,并且在 AWS 中,可以在构建机器时通过User Data在启动模板中的字段中添加以下文本来自动完成此操作:

#!/bin/bash
sed -i '$aPubkeyAcceptedKeyTypes=+ssh-rsa' /etc/ssh/sshd_config
service sshd restart

答案1

/etc/ssh #goto this directory
sudo nano sshd_config #edit the file
PubkeyAcceptedKeyTypes=+ssh-rsa #add this line and save and quit 
sudo systemctl restart sshd #restart sshd

再试一次就会成功

参考 :点击这里

相关内容