未添加元数据的Google Cloud Compute实例SSH密钥

时间:2018-03-08 13:08:46

标签: ssh google-cloud-platform metadata google-compute-engine

我已经成功地将SSH密钥添加到新生成的实例一段时间了,但突然间它才刚刚起作用。它们的密钥不会添加到目标帐户(如果帐户不存在,则不会创建该帐户)。它仍适用于我的一个项目,但它不包含另一个包含第一个代码的改编版本。两个代码所经历的步骤如下:

  1. 从快照创建磁盘。
  2. 生成RSA密钥对。
  3. 将元数据中的ssh-keys属性设置为上一步中以Google Cloud(<username>:ssh-rsa <key> <username>)理解的格式生成的公钥。
  4. 使用在第一步中创建的磁盘和在第三步中创建的元数据创建实例。
  5. 当我在Google云端控制台上查看实例数据时,它在SSH密钥部分中为正确的用户分配了正确的密钥。但是,当我SSH到实例时,密钥尚未添加到该用户的authorized_keys文件中。为了以防万一,我尝试在没有该用户的情况下重新创建快照,以便可以即时创建用户(这应该可行),但在这种情况下,用户不会被创建。

    最后,Google Cloud就好像SSH密钥不在元数据中,但它确实如此。我来到了this answer,但似乎无法理解这一部分:

      

    作为直接结果,GCE平台负责在实例(...)中放置/删除ssh密钥,仅在您未指定自己的密钥时(在实例创建时或以后)。如果这样做,GCE平台会将ssh密钥管理视为手册,并且不会与元数据存储保持同步。

    我没有看到我正在做的任何事情可能会触发它进入手动模式,但显然某处存在问题。

    我刚尝试从较旧的快照运行相同的进程,它运行完美。我会进一步调查,看看是什么原因造成的。

1 个答案:

答案 0 :(得分:0)

您需要拥有Guest Tools的最新版本。以下是在Ubuntu上安装最新版本的示例:

$ sudo apt-add-repository universe

$ sudo apt install -y python-google-compute-engine python3-google-compute-engine google-compute-engine-oslogin gce-compute-image-packages

您可以阅读here更多详细信息和其他操作系统。