ssh - 谷歌云 SSH key

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

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

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

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

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

最佳答案

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

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

Metadata can be assigned at both the project and instance level. Project level metadata propagates to all virtual machine instances within the project, while instance level metadata only impacts that instance. You can set both project and instance level metadata but if you set the same key for both your project and instance metadata, Compute Engine will use the instance metadata.

虽然这看起来相当合乎逻辑且简单,但必须非常仔细地注意所使用的术语:

Project level metadata propagates to all virtual machine instances within the project [...]

You can set both [...] but if you set the same key for both [...], Compute Engine will use the instance metadata.

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

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

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

幸运的是,GCE 平台做得很好,因此,您不需要重新创建实例来让 GCE 平台管理您的 key :您只需要删除与 sshKeys< 相关的实例级元数据.

同样,如果您使用 key sshKeys 添加一些实例级元数据,它将禁用 ssh key GCE 平台管理;除非您删除该实例级元数据。

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

<小时/>

附加说明:

某些发行版(例如 ubuntu)包含特定用户(对于 ubuntu:~ubuntu),项目中存在的每个用户都具有该用户-level ssh key 可以登录;但该用户的authorized_keys是在实例创建时生成的,并且GCE平台似乎永远不会再次更改。恕我直言,自动 ssh key 管理应该是首选。

<小时/>

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

关于ssh - 谷歌云 SSH key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23810539/

相关文章:

php - Vagrant 家园缓慢

ios - iOS/macOS云共享相册中如何给照片附加短数据?

file - 如何在 Linux 和 Windows 上从 std::fs 支持的任何文件系统复制文件元数据?

linux - 从 SOAPUI 访问服务器 (PUTTY) 上的日志

putty - 使用 Putty 进行 modbus 消息传递

java - BCECPublicKey 到指纹

linux - OpenSSH 拒绝连接到任何主机,无法进行键盘交互式登录

php - 油灰一段时间后停止响应

http - Restful api 数据同步仅在大集合上更改模型

php - 无法在 ASUSTOR NAS 型号 AS-302T 上执行 cron 作业