Container-Optimized OS 实例中的 ssh 主机密钥不同

Container-Optimized OS 实例中的 ssh 主机密钥不同

我在 Google Cloud 中创建了一个 Container-Optimized OS 实例。当我尝试从外部通过 ssh 连接到它时,显示的 ssh 主机密钥指纹与以下输出不同:

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

例如:

在此处输入图片描述

我错过了什么?

答案1

我自己找到了解决方案:

正在使用的 sshd 配置位于 下/mnt/stateful_partition/etc/ssh/,而不是 下/etc/ssh/

因此ssh-keygen -lf /mnt/stateful_partition/etc/ssh/ssh_host_ed25519_key.pub给出了正确的指纹。

答案2

这可能意味着你以某种方式“克隆”了你的虚拟机,它的真实指纹已经改变,但旧指纹仍然在你生成的 ssk 密钥中。这是此类问题最典型的原因 -在 ServerFault 上对此进行了讨论

为您的服务器生成新的 ssh 密钥,它应该与您尝试连接时获取的密钥相同。

您还可以从这些主题中获得更多想法:

答案3

要连接 Linux VM 实例,您需要自己的 SSH 密钥,它由唯一的 SSH 私钥文件和匹配的 SSH 公钥文件组成。

由于您通过命令行 ssh-keygen 生成 ssh-key,因此必须使用以下选项之一向实例提供公共 SSH 密钥:

  1. 使用操作系统登录,它允许您保持一致的 Linux 用户身份,并避免跨 VM 实例提供和管理 SSH 密钥。
  2. 使用 IAM 角色管理实例访问,它允许您通过您的 Google 帐户或托管用户帐户向实例提供您的公共 SSH 密钥。
  3. 将 SSH 密钥添加到元数据针对项目或者特定实例。
  4. 让另一个用户在实例上为您手动配置您的 SSH 公钥。

将 SSH 公钥应用到要连接的实例后,您可以使用 SSH 私钥来访问该实例。

就你的情况而言,似乎需要在 GCP 元数据 (SSH 密钥) 中添加公共 SSH 密钥。你可以在此处找到有关添加或删除项目范围公共 SSH 密钥的更多详细信息关联

相关内容