【问题标题】:Google Cloud Compute instance SSH key from metadata not added未添加来自元数据的 Google Cloud Compute 实例 SSH 密钥
【发布时间】:2018-08-16 20:27:27
【问题描述】:

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

  1. 从快照创建磁盘。
  2. 生成 RSA 密钥对。
  3. 将元数据中的ssh-keys 属性设置为上一步生成的公钥,格式为Google Cloud 可理解的格式(<username>:ssh-rsa <key> <username>)。
  4. 使用第一步创建的磁盘和第三步创建的元数据创建实例。

当我在 Google Cloud Console 上查看实例数据时,它在 SSH 密钥部分为正确的用户分配了正确的密钥。但是,当我通过 SSH 连接到实例时,尚未将密钥添加到该用户的 authorized_keys 文件中。以防万一,我尝试在没有该用户的情况下重新创建快照,以便可以动态创建用户(这应该可以),但在这种情况下不会创建用户。

最后,Google Cloud 的行为就像 SSH 密钥不在元数据中一样,但它确实存在。我遇到了this answer,但似乎无法理解这部分:

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

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


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

【问题讨论】:

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


    【解决方案1】:

    您需要拥有最新版本的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更多详细信息和其他操作系统。

    【讨论】:

    • 它适用于旧快照,但不适用于新快照;我看不出旧快照如何在没有新版本的情况下拥有来宾工具(或正确版本)。
    • 请我进一步了解这个问题。我为 Google Cloud 支持工作。您能否打开一个私人问题,并添加您的项目编号:issuetracker.google.com/issues/new?component=187164 一旦我们找到解决方案,我将发布它,以便任何人都可以得到答案。
    • 刚刚打开了一个 ID 为 74599290 的问题。
    • 您好@PLPeeters,根据我们对问题跟踪器的讨论,我们目前无法重现此行为。如果以后再次发生这种情况,您可以重新打开一个带有详细重现步骤的新问题跟踪器,我们很乐意为您提供帮助。
    • 我希望我现在可以提供一个最小的工作示例,但是最近几周我的时间有点短。如果我有时间最终开始这样做,我一定会再次联系!
    【解决方案2】:

    我尝试在 Debian-10 实例中重现此问题,但无法重现。我从快照创建了一个新实例,并在实例级元数据中的SSH Keys 部分中添加了一个公钥对,然后我尝试使用 SSH 密钥进行 SSH,我能够继续。


    这似乎是您无法添加 SSH 密钥的特定操作系统的问题。在这种情况下,我建议收集尽可能多的信息来调试根本原因。

    我建议验证来宾环境是否正在运行1,和/或手动安装它2,因为它使与Metadata server 的通信成为可能。

    还要确认 VM 能够访问元数据服务器 169.254.169.254 metadata.google.internal

    username@debian-10-000:~$ ping metadata.google.internal
    PING metadata.google.internal (169.254.169.254) 56(84) bytes of data.
    64 bytes from metadata.google.internal (169.254.169.254): icmp_seq=1     ttl=255 time=0.128 ms
    

    Related.

    【讨论】:

      猜你喜欢
      • 2019-04-26
      • 2015-02-16
      • 2019-10-11
      • 1970-01-01
      • 2021-05-21
      • 2020-03-24
      • 2023-03-22
      • 2017-10-20
      • 2014-09-06
      相关资源
      最近更新 更多