![EC2 Ubuntu 实例上的根账户被锁定](https://linux22.com/image/629506/EC2%20Ubuntu%20%E5%AE%9E%E4%BE%8B%E4%B8%8A%E7%9A%84%E6%A0%B9%E8%B4%A6%E6%88%B7%E8%A2%AB%E9%94%81%E5%AE%9A.png)
我设法通过将一些权限更改为 .ssh 将自己锁定在 Amazon EC2 Ubuntu 实例的根帐户之外。
以下是我尝试过但失败了的步骤。
- 创建一个新的临时实例(自行创建一个卷)。
- 停止旧实例。在此步骤中,我可以登录到新实例。
- 从旧实例中分离 EBS 卷(卷为 /dev/sda1)。
- 将旧卷附加到 /dev/sdb1 上的新实例。
实际结果:5. 重新启动新实例,现在无法登录,权限密钥错误。PS:如果我不重新启动新实例,我可以登录,但当我使用 mount /dev/sdb1 /mnt 进行安装时,出现错误“找不到驱动器”。
预期结果:5. 在新实例中安装设备。6. 编辑 sudoers 文件。7. 卸载设备。8. 分离卷。9. 将卷附加到 /dev/sda1 上的旧实例。10. 启动旧实例。11. 将旧实例链接回弹性 IP 地址。12. 再次开始呼吸。13. 删除临时实例。
答案1
不确定这是否会起作用,但是与您上面所做的不同。
将旧的 EBS 驱动器实例附加到 /dev/sdb2 并且不要分离当前的 /dev/sdb1,因为它正在运行一个您仍然可以通过 SSH 进入的实例。
在新的运行实例中,你应该能够运行
sudo mount /dev/sdb2 /mnt
chmod /home/ubuntu/.ssh 700
# assumes the home directory is the default ubuntu one
# for ubuntu/debian instances.
其次是:
sudo umount /mnt
现在在 EC2 控制台中分离驱动器并将其重新连接到旧实例并重新启动。希望现在您能够重新使用 ssh。
答案2
看起来您已成功用损坏实例中的驱动器替换临时实例中的驱动器。
这听起来不像是你的问题,但以防万一……如果你从市场上的 AMI 开始,则无法分离根卷来进行此类修复。显然是为了“保护”市场供应商免受他人更改其内容。
答案3
@Matt:谢谢你的帮助。我能够让它工作。我需要将旧卷连接到新实例而无需重新启动,然后安装它。出于某种原因,网络上的 AWS 控制台显示 dev/sda1,但当我查看日志时,驱动器是 dev/zsda1。
以下是有效的步骤(只需确保卷名称正确)
1.创建一个新的临时实例(自己创建一个卷)。 2.停止旧实例。在此步骤中,我可以登录到新实例。 3.从旧实例中分离 EBS 卷(卷为 /dev/sda1)。 4.将旧卷附加到 /dev/sdb1 上的新实例。 5.在新实例中安装设备。 6.编辑 sudoers 文件。 7.卸载设备。 8.分离卷。 9.将卷附加到 /dev/sda1 上的旧实例。 10.启动旧实例。 11.将旧实例链接回弹性 IP 地址。 12.再次开始呼吸。 13.删除临时实例。