Amazon AWS EC2 已删除密钥被锁定在根目录之外

Posted

技术标签:

【中文标题】Amazon AWS EC2 已删除密钥被锁定在根目录之外【英文标题】:Amazon AWS EC2 Deleted Key Locked out of Root 【发布时间】:2016-01-14 15:04:00 【问题描述】:

我在 Amazon AWS EC2 上运行一个 Ubuntu 实例。我有一个名为 ubuntu 的 root 用户。我还有另一个名为 ellis 的用户。我的 ubuntu 用户是管理用户,可以控制所有其他用户并在根目录中创建文件和目录。

当我将 .ssh/authorized_keys 从 /home/ubuntu/.ssh/authorized_keys 复制到 /home/ellis/.ssh 时,我一定不小心删除了 ubuntu 中的目录 .ssh。现在,我无法以 ubuntu 身份登录我的实例,只能以 ellis 身份登录。我尝试在 ellis 中更改权限以获得对 ubuntu 的访问权限,但没有成功。

我使用 FileZilla 作为 ellis,并且能够看到 ubuntu 中的目录和文件,这就是为什么我知道 .ssh 已从 ubuntu 中删除。

我需要能够访问 ubuntu。我已经尝试将我的 ssh 目录从 ellis 复制到 ubuntu,但是使用设置的权限,其他用户无法进行任何管理。有什么办法解决这个问题?

【问题讨论】:

我不认为你可以做任何事情.....尝试恢复已删除的 .ssh....否则你将永远被锁定!!! 我在亚马逊上使用 ubuntu 用户提供与您相同的服务,我知道如果我丢失了 key.pem,我将无法再次访问我的实例... 阅读此页面,其中讨论了丢失私钥。docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/… 我认为 @zee 有最适合我的答案 【参考方案1】:

您仍然可以通过将磁盘附加到另一个实例来访问该磁盘。这样,您就可以复制一个新的密钥文件。

试试这个:

停止您的实例(我们称之为Instance A) 启动另一个 Linux 实例或使用您已有的实例(我们称之为实例 B) 从实例 A 中分离您的根 EBS 卷(我们称之为 卷 A)——记下挂载设备,例如 /dev/sda1

通过控制台将卷 A 作为 /dev/sdf 附加到实例 B。 虽然提供的设备名称是 /dev/sdf,但 aws 可能会将其附加为 /dev/xvdf 或 /dev/xvdf1。 如果您没有看到 /dev/sdf 或 /dev/xvdf 或 /dev/xvdf1,您可能需要重新启动实例 B

尝试挂载卷/dev/xvdf或/dev/xvdf1,访问内容,导航到ubuntu用户的主目录,存储正确的ssh-key

从实例 B 中分离卷 A 将卷 A 附加到实例 A(在与上述相同的挂载设备上) 启动实例 A 并尝试登录

【讨论】:

哇。太感谢了。我按照您的所有步骤安装音量。我能够使用我已经拥有的授权密钥以 ubuntu 身份登录。有趣的是,/home/ubuntu/.ssh/authorized_keys 还在那里,我不知道为什么它以前不可见。我还尝试以 ellis 身份登录,这也很有效。由于它正在工作,我没有从我的新实例中分离卷,这有关系吗?另外,如果我的密钥正在工作并且从未被删除,为什么我无法以 ubuntu 身份登录? 为什么人们必须不喜欢某人的帖子?我确实研究了这个主题并对其进行了研究。我想要达到的目标也很清楚。谢谢。 @njoshsn 如果您有其他问题,请创建一个新问题,而不是在对旧问题的评论中提问。 @JohnRotenstein 在最后第四点中说store a correct ssh-key。我怎样才能做到这一点? @ajinzrathod 公钥存储在用户的主目录中,在~/.ssh/authorized_keys 下。有关更多信息,请在“Linux authorized_keys”上进行网络搜索。

以上是关于Amazon AWS EC2 已删除密钥被锁定在根目录之外的主要内容,如果未能解决你的问题,请参考以下文章

使用 python boto 创建和下载 AWS ec2 密钥对

在 Amazon EC2 上,是不是可以将密钥对重新分配给已运行的实例?

Amazon EC2 的名词解释

通过SecureCRT访问亚马逊Amazon EC2主机

通过SecureCRT访问亚马逊Amazon EC2主机

AWS Amazon Linux EC2 实例:apache 用户权限被拒绝写入目录