我在 EC2 实例上使用 chmod 破坏了 SSH — 我该如何纠正?

我在 EC2 实例上使用 chmod 破坏了 SSH — 我该如何纠正?

我已经运行 Amazon EC2 实例一段时间了,最​​近意外地递归更改了文件夹的权限/所有权。我无法再通过 SSH 进入实例。我不记得确切的命令是什么。然后我使用此问题的答案中提供的技术重新获得了基本访问权限:https://serverfault.com/questions/234061/re-gaining-root-access-to-an-ec2-ebs-boot-image

不过,我不知道该如何处理第 3 步(“修改它”)。我不知道该修改什么,在尝试设置正确的权限时,我也失去了对许多恢复 EC2 实例的访问权限!

作为参考,我使用 Win7 和 Putty/WinSCP 连接到实例。当我尝试通过 SSH 登录实例时,Putty 显示以下 2 个错误:

服务器拒绝我们的密钥

没有可用的受支持的身份验证方法(服务器发送:公钥)

我确信我对我的实例使用了正确的用户名、IP 地址和私钥。

任何帮助将非常感激。

答案1

解决方案,正如服务器故障帖子所述,就是将您的 EBS 安装到另一个您可以连接的(新)实例上。EBS 在那里只是一个驱动器,您将能够远程连接到该实例,因为它是新的。然后您就可以sudo chown首先破坏目录。

  1. 从 AWS 控制台停止(不是终止)您的第一个实例

  2. 从 AWS 控制台创建一个新的 Linux 实例

  3. 从第一个实例中分离 EBS,然后再次将其附加到新实例从 AWS 控制台. 将其命名为:/dev/sdm(在 EBS 控制台上,您将看到附加的卷名为 sdm,但在 Linux 上映射到 xvdm,因此它与下面的命令匹配。但请随意使用另一个字母并调整下一个命令。)

  4. SSH 到新实例并执行:

    sudo mkfs -t ext4 /dev/xvdm
    sudo mkdir /old-ebs
    # optional, in case this is a bit more permanent
    sudo echo "/dev/xvdm        /old-ebs     auto    noatime,noexec,nodiratime 0 0" >> /etc/fstab
    sudo mount /dev/xvdm /old-ebs
    
  5. 现在,您可以 (sudo) 访问旧 EBS,并且可以访问chown所需的目录。这里有一个提示,如果您迷路了,可以从新实例复制权限。

  6. 完成后,您可以停止新实例,从中分离 EBS 并将其重新附加到第一个实例,然后启动它。

上面的第三个控制台命令是可选的,用于添加已挂载的卷,以便/etc/fstab每次重启时自动挂载它。

相关内容