从Windows通过SSH连接AWS Linux实例遇权限拒绝问题求助
AWS EC2 SSH连接权限拒绝排查方案
问题情况
启动AWS EC2实例并下载密钥文件后,在两台不同设备、不同实例上尝试通过OpenSSH连接上传文件,均收到权限拒绝提示:Permission denied (publickey,gssapi-keyex,gssapi-with-mic)。
终端操作输出
PS C:\WINDOWS\system32> ssh -i C:\Users**\Downloads**key.pem **@ec2-***.us-west-2.compute.amazonaws.com 主机'ec2-***.us-west-2.compute.amazonaws.com (***.)'的真实性无法确定。 ECDSA密钥指纹为SHA256:**。 是否继续连接(yes/no/[fingerprint])? yes 警告:已永久将'ec2-***.us-west-2.compute.amazonaws.com,***.' (ECDSA)添加到已知主机列表。 **@ec2-***.us-west-2.compute.amazonaws.com: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)。 PS C:\WINDOWS\system32>
排查步骤
- 修复密钥文件权限:Windows环境下,打开PowerShell执行以下命令,限制只有当前用户能读取密钥文件(SSH会拒绝使用权限过宽的密钥):
icacls "C:\Users\你的用户名\Downloads\key.pem" /inheritance:r /grant:r "%USERNAME%:(R)" - 确认登录用户名:不同EC2镜像的默认登录用户不同,比如:
- Amazon Linux 2/Amazon Linux 2023:
ec2-user - Ubuntu:
ubuntu - CentOS:
centos - Debian:
admin
检查命令中的用户名是否与实例镜像匹配。
- Amazon Linux 2/Amazon Linux 2023:
- 验证密钥文件一致性:确保使用的
.pem文件是创建该EC2实例时下载的密钥对文件,不同实例的密钥对无法通用。 - 检查安全组规则:在AWS控制台确认实例所属安全组已允许**端口22(SSH)**从你的公网IP地址访问。
- 查看实例系统日志:在EC2实例详情页的「监控」-「系统日志」中,查找
sshd相关日志,确认是否有密钥认证失败的具体原因。
AWS官方连接指南核心要点(翻译自英文官方文档)
- 密钥文件必须设置严格的权限,禁止其他用户读取;
- 必须使用对应EC2镜像的默认登录用户名;
- 安全组规则必须允许SSH流量从你的IP地址进入实例;
- 连接时需通过
-i参数指定正确的密钥文件路径。
内容的提问来源于stack exchange,提问作者tsuxalo
相关产品推荐
相关产品推荐

