![SSH2 使用 PuttyGen 转换的工作密钥进行身份验证失败(由于 ssh-rsa 已弃用?)](https://linux22.com/image/779022/SSH2%20%E4%BD%BF%E7%94%A8%20PuttyGen%20%E8%BD%AC%E6%8D%A2%E7%9A%84%E5%B7%A5%E4%BD%9C%E5%AF%86%E9%92%A5%E8%BF%9B%E8%A1%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%A4%B1%E8%B4%A5%EF%BC%88%E7%94%B1%E4%BA%8E%20ssh-rsa%20%E5%B7%B2%E5%BC%83%E7%94%A8%EF%BC%9F%EF%BC%89.png)
我有一个使用 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
再试一次就会成功
参考 :点击这里