![无法登录 AMI,分配新的密钥对不起作用 - 如何完全重置 SSH?](https://linux22.com/image/662372/%E6%97%A0%E6%B3%95%E7%99%BB%E5%BD%95%20AMI%EF%BC%8C%E5%88%86%E9%85%8D%E6%96%B0%E7%9A%84%E5%AF%86%E9%92%A5%E5%AF%B9%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%20-%20%E5%A6%82%E4%BD%95%E5%AE%8C%E5%85%A8%E9%87%8D%E7%BD%AE%20SSH%EF%BC%9F.png)
我的 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
完成后,您应该能够更改相关配置、更改密码等。