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

为AWS Lightsail/EC2实例创建SSH密钥对无法按预期工作

AWS Lightsail/EC2实例创建SSH密钥对无法按预期工作

我太懂这种挫败感了!之前在AWS Lightsail和EC2上折腾新用户SSH登录的时候,也踩过一模一样的坑——常规本地生成密钥的方法好像突然就不管用了,AWS那堆写得稀里糊涂的指南更是越看越懵。

其实问题出在两个关键点上:一是新用户fred的家目录下没有配置好正确的authorized_keys文件和权限,二是AWS实例的SSH认证逻辑对权限要求特别严格。下面给你一套直接能用的解决步骤:

  • 首先用默认用户(比如你的ubuntu)正常登录到实例:
    ssh -i your-default-key.pem ubuntu@remotemachine.xyz
    
  • 切换到fred用户的环境(如果还没给fred设置密码,用sudo su - fred更稳妥):
    sudo su - fred
    
  • 在fred的家目录下创建.ssh文件夹,并设置严格的权限(这一步非常重要,权限不对SSH直接拒你):
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  • 创建authorized_keys文件,同样锁好权限:
    touch ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    
  • 把你本地生成的privatekeyforfred.pem对应的公钥内容(就是后缀为.pub的文件里的一串字符)粘贴到authorized_keys文件中。如果是在实例上给fred生成的密钥,就把~/.ssh/id_rsa.pub里的内容追加进去:
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
  • 把实例上生成的私钥(如果是在实例上生成的)下载到本地,然后给本地的私钥设置正确权限:
    chmod 400 privatekeyforfred.pem
    
  • 退出实例,现在尝试用fred用户登录:
    ssh -i privatekeyforfred.pem fred@remotemachine.xyz
    

这里再提醒几个容易忽略的坑:

  • 本地私钥的权限必须是400,SSH会拒绝使用权限过于开放的私钥文件
  • 服务器上fred的.ssh文件夹权限必须是700,authorized_keys必须是600,哪怕多一点权限都可能导致认证失败
  • 如果你想用AWS控制台创建的自定义密钥对登录fred,只需要把该密钥对的公钥内容添加到fred的authorized_keys里就行,逻辑是一样的

备注:内容来源于stack exchange,提问作者Alistair Ross

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:34:34