AWS EC2 Linux实例Putty SSH登录失败:无可用支持认证方法
AWS EC2 Linux实例Putty SSH登录失败:无可用支持认证方法
嗨,我来帮你分析下这个问题~你遇到的“无可用支持认证方法”错误,从Ubuntu的日志来看,核心原因是老的SSH-RSA密钥算法被新版本的OpenSSH默认禁用了,咱们分步骤解决:
一、先解决Ubuntu实例的登录问题
从你给出的日志:
Apr 3 06:19:36 ip sshd[11329]: userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]
明确能看出,当前sshd服务不允许使用ssh-rsa类型的密钥,你有两种解决思路:
思路1:临时开启ssh-rsa算法支持(快速解决)
- 先通过EC2 Web控制台登录到Ubuntu实例
- 编辑sshd配置文件:
sudo nano /etc/ssh/sshd_config - 找到
PubkeyAcceptedAlgorithms配置项,如果没有就直接添加一行:
(注意前面的PubkeyAcceptedAlgorithms +ssh-rsa+号,是在原有允许的算法基础上追加ssh-rsa,不是覆盖) - 保存文件后重启sshd服务:
sudo systemctl restart sshd - 现在再用Putty加载原来的RSA密钥尝试登录,应该就能成功了
思路2:生成更安全的现代密钥(推荐长期方案)
ssh-rsa属于较老的算法,安全性不如新的Ed25519,推荐生成新密钥替换:
- 打开本地的Puttygen工具,在「Parameters」区域选择「Ed25519」,点击「Generate」,移动鼠标生成密钥
- 生成完成后,点击「Save private key」保存为.ppk格式(记得备份好),然后复制公钥文本
- 回到EC2 Web控制台的Ubuntu实例,把复制的公钥添加到
~/.ssh/authorized_keys文件末尾(确保文件权限是600,文件夹权限是700) - 打开Putty,在「Connection -> SSH -> Auth」里选择新生成的.ppk文件,尝试登录即可
二、处理Amazon Linux实例的问题
你说Amazon Linux里找不到auth.log,其实它的SSH日志存在/var/log/secure文件里,你可以查看这个文件确认是不是同样的ssh-rsa算法问题。如果是的话,处理步骤和Ubuntu类似:
- 通过Web控制台登录Amazon Linux实例
- 编辑
/etc/ssh/sshd_config,添加或修改PubkeyAcceptedAlgorithms +ssh-rsa - 重启sshd服务:如果是Amazon Linux 2,用
sudo systemctl restart sshd;如果是Amazon Linux 1,用sudo service sshd restart - 同样检查Putty是否正确加载了密钥文件,再尝试登录
额外检查点
- 确保Putty的「Connection -> SSH -> Auth」里确实选择了正确的.ppk密钥文件,没有选错
- 确认EC2实例的安全组已经开放了22端口,允许你的本地IP访问
备注:内容来源于stack exchange,提问作者andrew




