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

误删AWS EC2实例authorized_keys后,通过用户数据恢复失败求助

解决AWS EC2误删~/.ssh/authorized_keys无法SSH登录的问题

兄弟,我太懂这种手滑的痛苦了!你之前用用户数据没成功,大概率是脚本写法和权限设置出了问题,我给你拆解下:

先说说你之前脚本的问题

你写的用户数据把#!/bin/bash和重定向命令堆在一行,这属于语法错误,脚本根本没法正确执行;另外就算侥幸写入了公钥,root用户创建的文件权限不对,SSH会因为安全策略直接拒绝登录——这俩是最常见的坑。

正确的用户数据修复步骤

你已经停了实例,接下来这么改用户数据:

  1. 右键实例 → 实例设置 → 修改用户数据
  2. 粘贴下面的脚本(记得把公钥内容换成你自己的):
#!/bin/bash
# 先确保.ssh目录存在,避免报错
mkdir -p /home/myUser/.ssh
# 写入你的公钥到authorized_keys(用>直接覆盖,因为之前已经空了)
echo "ssh-rsa aaa/bbb/ccc/ddd/etc== mykeypair" > /home/myUser/.ssh/authorized_keys
# 关键!设置正确的权限,这是SSH认密钥的前提
chown -R myUser:myUser /home/myUser/.ssh
chmod 700 /home/myUser/.ssh
chmod 600 /home/myUser/.ssh/authorized_keys
  1. 保存后启动实例,等个1-2分钟让用户数据脚本执行完,再尝试SSH登录。

如果用户数据还是不行,还有终极方案

要是上面的方法没生效,你可以用挂载卷的方式手动修改:

  • 停止出问题的实例,分离它的根卷(在EC2控制台的「卷」页面操作)
  • 启动一个临时的EC2实例(和原实例同区域、同系统),把刚才分离的卷挂载到临时实例上
  • 登录临时实例,找到挂载的卷(一般在/mnt或/dev/xvdf这类路径),进入/挂载路径/home/myUser/.ssh目录,编辑authorized_keys加入你的公钥
  • 卸载卷,重新挂载回原实例,启动原实例后就能SSH登录了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:16:53