AWS Ubuntu实例SSH连接报错Permission denied的解决办法咨询
问题背景
在AWS创建Ubuntu实例并下载对应的.pem私钥文件后,通过VS Code的SSH功能连接时出现报错:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic)
使用的.ssh/config配置如下:
Host AWS HostName 13.125.226.*** IdentityFile /Users/你的本地绝对路径/xxx.pem User ubuntu
同时在Mac上直接打开该.pem文件时,弹出“An error has occurred. Unable to import items.”提示,需确认该提示的作用及解决连接问题的方法。
可行解决办法
修正.pem文件权限:Mac/Linux系统对SSH私钥文件的权限有严格要求,权限过宽会被SSH客户端拒绝。执行以下命令设置正确权限:
chmod 400 /Users/你的路径/xxx.pem确保文件仅当前用户可读,其他用户无任何操作权限。
验证密钥文件路径:检查
IdentityFile后的绝对路径是否完全正确,包括文件名的拼写、大小写(Mac系统区分文件名大小写)。可通过终端执行ls /Users/你的路径/xxx.pem确认文件是否存在。检查安全组入站规则:登录AWS控制台,进入实例对应的安全组,确认入站规则允许SSH(22端口)从你的本地IP访问。若暂时无法确定本地IP,可临时将来源设置为
0.0.0.0/0(仅测试使用,长期需限制为指定IP)。确认密钥对与实例关联:在AWS控制台查看实例详情,确认实例使用的密钥对和你下载的.pem文件属于同一组。如果不匹配,需重新创建密钥对并关联到实例,或者手动将新密钥的公钥添加到实例的
~/.ssh/authorized_keys文件中。终端直接测试SSH连接:先排除VS Code的问题,直接在终端执行原生SSH命令测试:
ssh -i /Users/你的路径/xxx.pem ubuntu@13.125.226.***如果终端能成功连接但VS Code不行,检查VS Code的SSH扩展设置,比如是否启用了代理、是否正确加载了
.ssh/config配置。验证实例内authorized_keys文件:若上述步骤都无效,可通过AWS控制台的实例连接功能登录Ubuntu实例,查看
~/.ssh/authorized_keys文件内容,确认其中包含当前.pem文件对应的公钥。公钥可通过本地终端执行ssh-keygen -y -f /Users/你的路径/xxx.pem生成,对比实例内的内容是否一致。
关于Mac打开.pem文件的报错提示
这个提示无实际帮助,因为Mac的钥匙串访问程序会将.pem文件误认为证书格式尝试导入,但.pem是SSH私钥文件,并非证书,所以导入失败是正常现象,和SSH连接失败的问题没有关联,无需关注。
内容的提问来源于stack exchange,提问作者JungHwanPark

