我设法通过更改某些权限为.ssh来将自己从Amazon EC2 Ubuntu实例的root帐户中解脱出来。
以下是我尝试过的步骤,并且失败了。
实际结果:5.重新启动新实例,现在无法login和权限密钥错误。 PS:如果我不重新启动新的实例,我可以login,但是当我挂载使用mount / dev / sdb1 / mnt时,我得到一个错误的驱动器找不到。
预期结果:5.在新的实例中安装设备。 6.编辑sudoers文件。 7.卸下设备。 8.分离音量。 9.将卷连接到/ dev / sda1上的旧实例。 10.启动旧的实例。 11.将旧实例链接回弹性IP地址。 12.再次开始呼吸。 13.删除临时实例。
不知道这是否会起作用,而不是你在上面做的。
将旧的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回来。
看起来你设法用破坏的实例中的临时实例replace驱动器。
这听起来不像是你的问题,但以防万一…如果你从市场开始AMI,你不能分离根卷来做这种修复。 显然是为了“保护”市场供应商而不是改变他们的东西。
@Matt:感谢您的帮助。 我能够得到它的工作。我需要将旧卷附加到新实例,无需重新启动,然后将其挂载。 出于某种原因,Web上的AWS控制台显示了dev / sda1,但是当我查看日志时,驱动器是dev / zsda1。
以下是工作的步骤(只需确保卷名是正确的)
1.创build一个新的临时实例(自己创build一个卷)。 停止旧的情况。 在这一步,我可以login到新的实例。 3.从旧实例中获取EBS卷(卷为/ dev / sda1)。 4.将旧卷连接到/ dev / sdb1上的新实例。 5.以新的实例安装设备。 6.编辑sudoers文件。 7.卸下设备。 8.分离音量。 9.将卷连接到/ dev / sda1上的旧实例。 10.启动旧的实例。 11.将旧实例链接回弹性IP地址。 12.再次开始呼吸。 13.删除临时实例。