我已经成功地将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 回答
您需要拥有最新版本的Guest Tools . 以下是在Ubuntu上安装最新版本的示例:
您可以阅读here更多详细信息和其他操作系统 .