根锁定在EC2之外


8

我正在禁用AWS EC2实例上的root登录。在将PermitRootLogin设置为no并重新启动sshd之后,我偶然关闭了终端-在设置具有sudo特权的用户之前。结果是,我以root用户身份进入实例的密钥不起作用(sshd禁止它),并且当我使用常规用户登录实例时,我无法获得root特权(从未设置root密码)。该实例正在运行ubuntu 8.10。有人知道如何解决此问题吗?

Answers:


9

不,不要终止实例,一切都不会丢失!!

  1. 引导另一个实例并关闭坏实例。
  2. 从不良实例分离EBS卷并将其附加到新实例。
  3. 在新实例中挂载它(例如sudo mount / dev / xvdf1 / mnt /)
  4. chroot到其中(sudo chroot / mnt),然后键入passwd。
  5. 重置密码或进行其他所需的更改(例如,vi / etc / ssh / sshd_config!)
  6. 按Ctrl-D或键入exit退出chroot。
  7. 挂载/ mnt
  8. 从临时实例中分离EBS卷
  9. 重新连接或捕捉快照,然后基于该快照创建新的AMI
  10. 重新启动固定盒!

PS下次尝试使用Userify来管理用户的密钥:)


1
注意:如果您是从AWS市场启动实例的,则此方法将无效(这些实例的根卷无法在其他位置安装)。这包括某些开放源代码发行版,例如CentOS。
fatal_error

3

在没有发现漏洞的情况下,在Linux计算机上获得root用户访问权限的唯一方法是引导进入单用户模式并重置密码。但是,您在EC2实例上没有KVM级访问权限,因此这是不可能的。

您需要终止该EC2实例并启动另一个实例。但是禁用root登录与EC2的一般范例背道而驰。亚马逊建议您在实例启动时提供一个公共密钥,并在/root/.ssh/authorized_keys中安装一个初始化脚本,并将sshd配置为“ PermitRootLogin without-password”以仅强制密钥对登录。这样,您绝不会意外地将自己锁定在根帐户之外(前提是您不会丢失私钥)。

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


屏幕提示为+1,尽管我更喜欢tmux
h0tw1r3 2011年

在这种情况下(假设实例具有的是EBS),低于安装EBS量的解决方案将可以使用。
AliGibbs 2014年

1

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


-1

一种方法是在系统中查找本地漏洞,这些漏洞可以授予您root外壳程序。获取安装在此框中的软件列表,并分别使用google / securityfocus。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.