在一次性虚拟机中,例如当今公司在 GCP 或 AWS 中通常使用的虚拟机,每次实例首次启动时,它都会创建一组新的 ssh 主机密钥。这意味着,如果自上次连接到实例以来重新创建了实例(通过交互式会话,或者更糟的是,在 CI 中部署最新代码),ssh 客户端将失败,因为主机密钥发生了变化。常见的解决方案(至少对于 ansible)始终是“禁用主机检查”但我觉得这不是个好主意。你正在禁用安全检查的一个重要部分。
- 在 GCE 中设置主机密钥的最简单方法是什么?也许像 cloud-init 那样?
- 是否可以重复使用相同的主机密钥全部您的虚拟机实例,还是最好只对具有相同名称的实例重用密钥?例如,
db-1
无论重新创建多少次,主机密钥都会相同,但db-2
与db-1
答案1
作为实例创建过程的一部分,您应该让ssh-keyscan
新创建的 VM 实例获取其 ssh 主机密钥。然后,您可以将这些密钥分发到需要它们的任何位置。