误删AWS EC2实例authorized_keys后,通过用户数据恢复失败求助
兄弟,我太懂这种手滑的痛苦了!你之前用用户数据没成功,大概率是脚本写法和权限设置出了问题,我给你拆解下:
先说说你之前脚本的问题
你写的用户数据把#!/bin/bash和重定向命令堆在一行,这属于语法错误,脚本根本没法正确执行;另外就算侥幸写入了公钥,root用户创建的文件权限不对,SSH会因为安全策略直接拒绝登录——这俩是最常见的坑。
正确的用户数据修复步骤
你已经停了实例,接下来这么改用户数据:
- 右键实例 → 实例设置 → 修改用户数据
- 粘贴下面的脚本(记得把公钥内容换成你自己的):
#!/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-2分钟让用户数据脚本执行完,再尝试SSH登录。
如果用户数据还是不行,还有终极方案
要是上面的方法没生效,你可以用挂载卷的方式手动修改:
- 停止出问题的实例,分离它的根卷(在EC2控制台的「卷」页面操作)
- 启动一个临时的EC2实例(和原实例同区域、同系统),把刚才分离的卷挂载到临时实例上
- 登录临时实例,找到挂载的卷(一般在
/mnt或/dev/xvdf这类路径),进入/挂载路径/home/myUser/.ssh目录,编辑authorized_keys加入你的公钥 - 卸载卷,重新挂载回原实例,启动原实例后就能SSH登录了
内容的提问来源于stack exchange,提问作者x3nr0s
相关产品推荐
相关产品推荐

