无法登录 AMI,分配新的密钥对不起作用 - 如何完全重置 SSH?

无法登录 AMI,分配新的密钥对不起作用 - 如何完全重置 SSH?

我的 Ubuntu EC2 实例发生了一些奇怪的事情 - 虽然它曾经分配有用于登录的密钥对,并且工作正常(通过默认的 EC2 控制台通道创建),但分配的密钥对从 EC2 控制台中“消失”(现在说没有分配密钥对),并且登录尝试现在导致 PuTTY 中出现“没有可用的受支持的身份验证方法(服务器发送的公钥)”错误,并且我的桌面 Linux 机器出现简单的连接超时。

因此,我从实例创建了一个 AMI,并从该 AMI 启动了一个新实例并分配了一个新的密钥对,而且我也无法通过 SSH 进入新实例!

我从辅助实例挂载了根卷并检查了 .bash_history 和 sshd_config,似乎没有什么异常或与默认 EC2 设置有什么不同。

奇怪的是,我可以在已挂载磁盘上为 ubuntu 用户添加一个散列密码条目,并允许在 sshd_config 中进行密码验证,然后我可以重新启动实例并通过密码 SSH 登录 - 但是当我尝试从这个“固定”密码登录实例创建 AMI,然后再次启动时,它不再接受密码!

本次测试涉及的所有实例都具有相同的安全组,对 SSH 组开放。我无法解释此难题中实例的大多数行为。

我有什么选择?我如何才能“完全重置”此实例中 SSH 发生的奇怪事情?我尝试过sudo apt-get remove --purge openssh-client openssh-server,然后重新安装,但行为没有改变。实例上的设置很复杂,所以我的目标是从此实例创建一个可以通过 SSH 进入的 AMI。

编辑:在第二步中,我尝试从原始实例创建 AMI 并添加新的密钥对 - 在 EC2 控制台中现在已分配密钥对名称,但仍然不起作用。我尝试这样做时出现的错误是:Permission denied (publickey).

编辑 2:因此,我将 ~/.ssh/authorized 密钥从新创建的 EC2 实例复制到了无法登录的实例的启动设备。我还从新的 EC2 实例复制了 sshd_config。两个实例在 EC2 控制台上都分配了相同的新密钥对,并且我使用相同的本地私钥连接到这两个实例。两者在 /etc/shadow 中都只有一个没有密码的 ubuntu 用户,并且在 sshd_config 中禁用了 passwordauth。一个有效,另一个仍然返回Permission denied (publickey)

答案1

如果重新启动系统没有问题,您可以尝试重新启动进入单用户模式,这个答案解释如何使用 GRUB2 作为引导加载程序来执行此操作。

如果您有另一个系统,并且损坏实例的根文件系统可用/可安装,您可以尝试从工作系统安装它,然后使用

chroot /path/to/root/fs

完成后,您应该能够更改相关配置、更改密码等。

相关内容