![我在 EC2 实例上使用 chmod 破坏了 SSH — 我该如何纠正?](https://linux22.com/image/1416016/%E6%88%91%E5%9C%A8%20EC2%20%E5%AE%9E%E4%BE%8B%E4%B8%8A%E4%BD%BF%E7%94%A8%20chmod%20%E7%A0%B4%E5%9D%8F%E4%BA%86%20SSH%20%E2%80%94%20%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E7%BA%A0%E6%AD%A3%EF%BC%9F.png)
我已经运行 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
首先破坏目录。
从 AWS 控制台停止(不是终止)您的第一个实例
从 AWS 控制台创建一个新的 Linux 实例
从第一个实例中分离 EBS,然后再次将其附加到新实例从 AWS 控制台. 将其命名为:/dev/sdm(在 EBS 控制台上,您将看到附加的卷名为 sdm,但在 Linux 上映射到 xvdm,因此它与下面的命令匹配。但请随意使用另一个字母并调整下一个命令。)
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
现在,您可以 (sudo) 访问旧 EBS,并且可以访问
chown
所需的目录。这里有一个提示,如果您迷路了,可以从新实例复制权限。完成后,您可以停止新实例,从中分离 EBS 并将其重新附加到第一个实例,然后启动它。
上面的第三个控制台命令是可选的,用于添加已挂载的卷,以便/etc/fstab
每次重启时自动挂载它。