【问题标题】:Google Cloud SSH Keys谷歌云 SSH 密钥
【发布时间】:2014-07-11 17:02:37
【问题描述】:

我已经使用 Google Compute Engine 设置了我的新服务器。我在 Google Cloud 控制台 (sshKeys) 的元数据中添加了一个用户及其公钥。

我试图替换元数据中的公钥,但现在旧公钥似乎是唯一能够通过 ssh 连接到我的服务器的公钥(使用 PuTTY)。新的好像没有更新。

现在,即使我删除整个元数据或在sshKeys 字段中输入乱码,它仍然可以工作!

是否需要一些时间才能将元数据推送到服务器(我之前的尝试是即时的)?

【问题讨论】:

  • 为项目范围的元数据设置 sshKeys 元数据值已弃用;使用ssh-keys 元数据值代替。更多关于这个here.

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


【解决方案1】:

要了解 Google Compute Engine 如何管理 ssh 密钥,您必须了解 GCE 如何管理 metadata(因为正如您所写,它们位于元数据存储中)。

更具体地说,project and instance metadata 之间的区别至关重要。引用文档(参见之前的链接):

可以在项目和实例级别分配元数据。项目级元数据传播到项目内的所有虚拟机实例,而实例级元数据仅影响该实例。您可以同时设置项目和实例级元数据,但如果您为项目和实例元数据设置相同的键,Compute Engine 将使用实例元数据。

虽然这看起来相当合乎逻辑和直截了当,但必须非常密切地注意所使用的术语:

项目级元数据传播到项目内的所有虚拟机实例 [...]

您可以同时设置两个 [...],但如果您为两个设置相同的键 [...],Compute Engine 将使用实例元数据

如果你考虑这两个断言,它意味着两件事:

  1. 如果您在项目级别设置元数据ONLY,它将在您的实例中传播。
  2. 如果您在 instance 级别设置元数据,它将优先于 project 级别的元数据,并且不会传播任何内容。

因此,GCE 平台负责在实例中放置/删除您的 ssh 密钥(并在放置它们时创建相关用户,同时在删除它们时从 ~user/.ssh/authorized_keys 文件中删除密钥 -所以你不会丢失~user 的任何数据当你没有指定自己的密钥时(在实例创建时或以后)。如果这样做,GCE 平台会将 ssh 密钥管理视为手动,并且不会与元数据存储保持同步。

幸运的是,GCE 平台做得很好,因此,您无需重新创建实例即可让 GCE 平台管理您的密钥:您只需删除与sshKeys 相关的实例级元数据。

同理,如果你添加一些实例级别的元数据键为sshKeys,它会禁用ssh键GCE平台管理;除非您删除该实例级别的元数据。

关于延迟问题:到目前为止,除了网络延迟(因此没有明显的平台执行延迟)之外,我没有任何延迟。我认为平台时不时出现延迟不是不可能的,但似乎不太可能是您问题的原因。


补充说明:

一些发行版(例如 ubuntu)包括一个特定的用户(在 ubuntu 的情况下:~ubuntu),每个用户都存在于 项目级 ssh 密钥可以登录;但是该用户的authorized_keys 是在实例创建时生成的,GCE 平台似乎再也不会更改。恕我直言,应该首选自动 ssh 密钥管理。


来源:个人使用 GCE、terraform 和 Google 开发者控制台的经验

【讨论】:

  • 为项目范围的元数据设置 sshKeys 元数据值已弃用;使用ssh-keys 元数据值代替。更多关于这个here.
【解决方案2】:

从 sshKeys 元数据中删除密钥不会导致该密钥从实例中删除。

听起来新密钥的格式可能存在错误,这就是未添加新密钥的原因。 sshKeys 元数据的每一行应该看起来像“用户名:ssh-rsa AAAAB3Nza.....sjr 评论”。不能有多余的空格、空行。

一个常见的错误是,如果您从开发人员控制台中的 sshKeys 元数据中复制、添加密钥并将其粘贴回来,您必须非常小心新行,因为开发人员控制台会丢失 html 输出中的新行。

【讨论】:

  • 似乎添加了密钥,但只是添加到单个用户的 authorized_keys 文件中,而不是创建新用户并将其添加为密钥。
  • 为项目范围的元数据设置 sshKeys 元数据值已弃用;使用ssh-keys 元数据值代替。更多关于这个here.
猜你喜欢
  • 2018-11-25
  • 2013-12-18
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多