连接云实例时遇Permission denied(publickey,gssapi-keyex,gssapi-with-mic)错误求助
解决SSH登录EC2实例时的Permission denied (publickey)错误
以下是针对这个问题的逐一排查和解决步骤:
检查密钥文件权限
Linux系统对SSH密钥文件权限要求严格,权限过宽会被SSH客户端直接拒绝。执行以下命令修正权限:chmod 600 vprofile-prod-key.pem同时确保密钥所在的父目录权限不超过755,比如密钥放在
~/.ssh目录下的话,执行:chmod 755 ~/.ssh确认登录用户名是否正确
EC2不同操作系统镜像的默认用户名不同:- Amazon Linux/Amazon Linux 2:
ec2-user - Ubuntu:
ubuntu - CentOS:
centos - RHEL:
ec2-user或root
如果实例是Ubuntu系统,用ec2-user登录必然失败,先核对实例的操作系统类型。
- Amazon Linux/Amazon Linux 2:
验证公钥是否已添加到实例的authorized_keys
先从本地密钥导出公钥:ssh-keygen -y -f vprofile-prod-key.pem > public_key.pub确保该公钥已添加到实例的
/home/[用户名]/.ssh/authorized_keys文件中。如果无法通过SSH登录,可以通过EC2控制台的连接功能,选择“会话管理器”(需实例满足SSM条件)或“挂载卷”方式修改该文件。检查实例安全组规则
确认实例所属的安全组入站规则允许SSH(TCP端口22)从你的公网IP地址访问。可以临时添加一条允许0.0.0.0/0的规则进行测试(测试完成后务必删除,避免安全风险)。启用SSH调试模式定位问题
执行带调试参数的SSH命令,查看详细交互日志:ssh -v -i vprofile-prod-key.pem ec2-user@myipaddress重点关注日志中关于公钥提交、服务器响应的内容:
- 如果日志显示“Offering public key: ...”但服务器返回拒绝,大概率是实例端authorized_keys配置错误或密钥不匹配;
- 如果日志显示找不到密钥文件,检查密钥路径是否正确、权限是否合规。
检查实例的SSH服务配置
若能通过其他方式登录实例,检查/etc/ssh/sshd_config文件:- 确保
PubkeyAuthentication yes已启用; - 确认
AuthorizedKeysFile路径指向正确(默认是.ssh/authorized_keys);
修改配置后重启SSH服务:
sudo systemctl restart sshd- 确保
确认密钥对与实例匹配
登录EC2控制台,查看实例详情中的“密钥对名称”,确保和你使用的vprofile-prod-key.pem对应的密钥对完全一致。如果实例启动时使用的是其他密钥对,当前密钥无法用于登录。
内容的提问来源于stack exchange,提问作者Moladejo
相关产品推荐
相关产品推荐

