【发布时间】:2018-08-16 20:27:27
【问题描述】:
我已经成功地将 SSH 密钥添加到新生成的实例有一段时间了,但突然之间它就不起作用了。它们的密钥不会添加到目标帐户(如果帐户不存在,则不会创建该帐户)。它仍然适用于我的一个项目,但它不适用于包含第一个代码的改编版本的另一个项目。两个代码执行的步骤如下:
- 从快照创建磁盘。
- 生成 RSA 密钥对。
- 将元数据中的
ssh-keys属性设置为上一步生成的公钥,格式为Google Cloud 可理解的格式(<username>:ssh-rsa <key> <username>)。 - 使用第一步创建的磁盘和第三步创建的元数据创建实例。
当我在 Google Cloud Console 上查看实例数据时,它在 SSH 密钥部分为正确的用户分配了正确的密钥。但是,当我通过 SSH 连接到实例时,尚未将密钥添加到该用户的 authorized_keys 文件中。以防万一,我尝试在没有该用户的情况下重新创建快照,以便可以动态创建用户(这应该可以),但在这种情况下不会创建用户。
最后,Google Cloud 的行为就像 SSH 密钥不在元数据中一样,但它确实存在。我遇到了this answer,但似乎无法理解这部分:
因此,GCE 平台仅在您未指定自己的密钥(在创建实例时或之后)时才负责在实例中放置/删除您的 ssh 密钥(...)。如果这样做,GCE 平台会将 ssh 密钥管理视为手动管理,并且不会与元数据存储保持同步。
我没有看到我正在做的任何事情可能会触发它进入手动模式,但显然某处存在问题。
我刚刚尝试从较旧的快照运行相同的进程,它运行完美。我会进一步调查,看看是什么原因造成的。
【问题讨论】:
标签: ssh google-cloud-platform metadata google-compute-engine