You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS EC2实例无.pem文件SSH登录失败问题求助

问题原因及解决办法

以下是导致你遇到这个问题的常见原因及对应解决方法:

1. SSH 默认未加载你的自定义私钥

SSH 在不通过 -i 指定私钥时,只会自动查找默认路径下的标准命名私钥,比如:

  • ~/.ssh/id_rsa
  • ~/.ssh/id_ecdsa
  • ~/.ssh/id_ed25519

如果你的私钥是自定义名称(比如mypemfile.pem)或者放在非默认目录,SSH 找不到对应私钥,就会触发Permission denied (publickey)错误。而通过-i参数明确指定私钥路径后,SSH就能正确加载密钥完成认证。

解决办法:

  • 将私钥复制到默认路径并重命名为标准名称:
    cp /path/to/mypemfile.pem ~/.ssh/id_rsa
    
  • 或者通过ssh-agent添加私钥,让SSH自动识别:
    ssh-add /path/to/mypemfile.pem
    
    (需要永久生效的话,可把这条命令加到你的shell配置文件,比如~/.bashrc或~/.zshrc)

2. 使用sudo执行SSH导致用户上下文切换

你执行的是sudo ssh ubuntu@publicIPAddress,这会切换到root用户的上下文发起SSH连接。root用户的SSH密钥目录是/root/.ssh/,而非你普通用户的~/.ssh/。如果/root/.ssh/下没有对应的私钥,SSH就无法完成认证;但通过-i指定私钥路径时,SSH会直接读取你指定的文件,不受当前用户上下文的.ssh目录限制,所以能成功登录。

解决办法:

  • 不要用sudo执行SSH命令,直接用普通用户身份运行:
    ssh ubuntu@publicIPAddress
    
  • 若确实需要用root用户发起连接,把私钥复制到/root/.ssh/目录并设置正确权限:
    sudo cp /path/to/mypemfile.pem /root/.ssh/id_rsa
    sudo chmod 600 /root/.ssh/id_rsa
    

3. 本地私钥权限不符合SSH安全要求

SSH对私钥权限有严格限制,若私钥的权限过松(比如组或其他用户有读取权限),会被SSH拒绝使用。

解决办法:
设置私钥权限为仅所有者可读:

chmod 600 /path/to/mypemfile.pem

4. EC2实例上的.ssh目录或authorized_keys权限错误

即使你确认authorized_keys内容正确,若目录或文件权限不符合要求,SSH服务也会拒绝认证。

解决办法:
登录EC2实例后,执行以下命令修复权限:

sudo chown -R ubuntu:ubuntu /home/ubuntu/.ssh
sudo chmod 700 /home/ubuntu/.ssh
sudo chmod 600 /home/ubuntu/.ssh/authorized_keys

内容的提问来源于stack exchange,提问作者Zain Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:12:15