根被锁定在 EC2 之外

根被锁定在 EC2 之外

我正在禁用 AWS EC2 实例上的 root 登录。在设置 PermitRootLogin no 并重新启动 sshd 后,我意外关闭了终端——在设置具有 sudo 权限的用户之前。结果是我以 root 身份进入实例的密钥不起作用(sshd 禁止这样做),当我使用我的普通用户登录实例时,我无法获得 root 权限(从未设置 root 密码)。该实例正在运行 ubuntu 8.10。有人知道我该如何解决这个问题吗?

答案1

不,不要终止实例,一切都还没有丢失!!

  1. 启动另一个实例并关闭损坏的实例。
  2. 从损坏的实例中分离 EBS 卷并将其附加到新实例。
  3. 将其挂载到新实例中(例如,类似 sudo mount /dev/xvdf1 /mnt/ )
  4. chroot 进入它(sudo chroot /mnt)并输入 passwd。
  5. 重置密码或进行任何其他您喜欢的更改(例如 vi /etc/ssh/sshd_config!)
  6. 按 control-D 或输入 exit 退出 chroot。
  7. 卸载 /mnt
  8. 将 EBS 卷从临时实例中分离出来
  9. 重新连接或拍摄快照并根据该快照创建新的 AMI
  10. 重新启动修复后的盒子!

PS下次尝试用户化管理用户的密钥:)

答案2

如果不找到漏洞,在 Linux 机器上获取 root 访问权限的唯一方法是启动到单用户模式并重置密码。但是,您在 EC2 实例上没有 KVM 级访问权限,因此这是不可能的。

您需要终止该 EC2 实例并启动另一个实例。但禁用 root 登录违反了 EC2 的一般范式。Amazon 建议您在实例启动时提供公钥,并让 init 脚本将其安装到 /root/.ssh/authorized_keys 中,并将 sshd 配置为“PermitRootLogin without-password”以强制仅使用密钥对登录。这样,您就永远不会意外将自己锁定在 root 帐户之外(前提是您没有丢失私钥)。

将来,我建议您创建一个具有 sudo 访问权限的用户,然后在登录后立即启动“screen”会话,这样断开连接就不会停止/破坏您的工作。配置和安装应用程序后,捆绑、上传和捆绑 AMI,以便您可以在需要时启动新实例。

答案3

在禁用根登录之前,您是否保存了对实例所做的任何更改的 AMI?如果没有,您将必须返回到您开始使用的基本 AMI 并创建一个新的 EC2 实例。

答案4

一种方法是找到系统中可以授予您 root shell 的本地漏洞。获取安装在盒子中的软件列表,然后对每个软件进行 google/securityfocus 搜索。

相关内容