首页 文章

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

提问于
浏览
4

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

  • 从快照创建磁盘 .

  • 生成RSA密钥对 .

  • 将元数据中的 ssh-keys 属性设置为上一步中以Google Cloud( <username>:ssh-rsa <key> <username> )理解的格式生成的公钥 .

  • 使用在第一步中创建的磁盘和在第三步中创建的元数据创建实例 .

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

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

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

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


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

1 回答

  • 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更多详细信息和其他操作系统 .

相关问题