Google Compute Engine SSH-切换到OS登录后用户名不同

Google Compute Engine SSH-切换到OS登录后用户名不同

我创建了一个 Compute Engine VM(Ubuntu 18.04),当我使用 VM 实例列表中的 SSH 按钮登录时,我以用户身份登录username

过了一会儿,我意识到我也需要能够使用另一个 SSH 客户端。根据https://cloud.google.com/compute/docs/instances/connecting-advanced我通过在元数据中添加键值对来启用 OS Login,其中键为enable-oslogin,值为TRUE

然后我尝试添加我现有的 SSH 密钥:

gcloud compute os-login ssh-keys add --key-file path/to/key.pub --ttl 0

除了一个主要问题外,其余一切都很成功:它为用户添加了密钥username_gmail_com,并且只允许我以该用户身份通过​​ ssh 连接到我的虚拟机:

ssh username_gmail_com@myinstance

而且它还在我的虚拟机上创建了该用户。从 Web 界面,我也使用该新用户登录到虚拟机 ( /home/username_gmail_com)。当然,我仍然可以访问原始用户的数据 ( /home/username)。当我禁用 OS 登录时,Web 界面会username再次以我的身份登录,并且来自另一个客户端的 SSH 被禁用。

  1. 为什么启用 OS 登录时用户名不同?
  2. 启用 OS 登录后我可以更改用户名吗?

编辑

文档中已经添加了一个附加内容来准确解释这个问题。请查看此处:https://cloud.google.com/compute/docs/oslogin/以及我上面提到的页面一直到最底部的“预期登录行为”下。

答案1

我问了这个问题这里并得到了明确的答复。

为什么启用和禁用 OS Login 时用户名不同?

OS Login 将您的 Linux 用户帐户与您的 Google 身份绑定,以便您在登录的每个 VM 中都有一致的用户名、UID 和其他 posix 信息。

[...]

为了防止不同组织之间发生唯一性冲突([电子邮件保护][电子邮件保护]) 默认包含域名。

[...]

当未启用 OS Login 时,用户名将设置在您的 SSH 密钥中,该密钥与用户的 Google 身份无关。用户名的生成是为了方便,并且不涉及任何与 OS Login 相关的特定问题。

当启用 OS Login 时我可以影响用户名吗?

对于消费者身份(非 G Suite 用户)来说,posix 信息是不可变的。

所以不可以,因为我是个人,而不是组织。

最后,我通过简单地重新创建启用了 OS Login 的服务器解决了这个问题给我带来的不便 - 这当然是 Compute Engine 的优势之一。

答案2

如果您在元数据中添加了 ssh-key,则应该能够通过以下命令访问实例内的 root 帐户:

sudo -i

当以 root 身份时,您可以访问 /home/username 文件夹并传输所需的文件。

答案3

根据此github文档中,OS Login 包(实例中的客户环境)从用户的 OS Login 配置文件中获取 SSH 密钥,并将其提供给 sshd。但这样做时,它必须查询元数据服务器以获取配置文件,并检查用户帐户(电子邮件地址)的授权。

进一步解释一下,如果使用第三方工具进行 SSH,将用户添加到实例的传统方法是创建并为每个用户将公钥添加到实例或项目的元数据中,并根据此文档

但是,OS Login 旨在使用 Compute Engine IAM 角色来管理 SSH 密钥。这意味着需要被授予实例 SSH 访问权限的每个用户都应拥有一个 Google 帐户(电子邮件),该帐户应是项目成员,并具有适当的 Compute Engine IAM 角色(例如compute.oslogin)。

因此,当上述 github 链接中解释的过程首次发生时,它会创建一个继承该帐户格式(电子邮件)的用户,例如user_lastname_gmail_com。有关 OS Login 的更多信息,您可以验证这一点文档

答案4

我遇到了同样的问题。还没有找到合适的解决方案,但一个可能的解决方法是在 ~/.bashrc 或 ~/.bash_profile 中添加以下行:

cd /home/{preferred_username}
source /home/{preferred_username}/.bashrc (or any file of your choosing which adds user based settings for your environment)

相关内容