6

我们有一个用户可以通过 SSH 连接到 Google Cloud Platform 上的虚拟机。

他的密钥被添加到虚拟机中,他可以使用 SSH

gcloud compute ssh name-of-vm

但是以这种方式连接总是会让 gcloud 尝试更新项目范围的元数据

更新项目 ssh 元数据...失败

它失败了,因为他只有访问和管理此 VM 的权限

但是非常烦人的是,每次他必须以这种方式连接时,他都必须等待 GCP 尝试更新元数据,这是不允许的,然后检查机器上的 sshkey。

  1. 命令中是否有一个标志来跳过检查/更新项目范围的 ssh 密钥?

是的,我们可以在实例上“阻止项目范围的 ssh 密钥”,但这意味着其他项目管理员无法再登录。

我还尝试最小化对该用户的访问。

  1. 但是,理想情况下,如果允许他通过 SSH 连接到机器、启动和停止实例并将数据存储到存储桶中,他应该拥有什么权利?
4

3 回答 3

2

您可以做的是为您需要的所有用户(包括管理员)启用 oslogin,在实例上启用操作系统登录会在这些实例上禁用基于元数据的 SSH 密钥配置。

启动、停止和通过 SSH 连接到实例的角色是 roles/compute.instanceAdmin (考虑到此角色目前处于测试阶段) 您可以在此处查看可用的 Compute Engine 角色列表,以便您选择一个更适合您的需求。

要将数据存储到桶中,我认为最合适的角色是角色/storage.objectCreator,它允许用户创建对象但不能删除或覆盖对象。

于 2018-04-16T08:00:36.047 回答
1

我发现这个解决方案非常有用。

  1. config创建一个名为~/.ssh
  2. 将以下内容添加到其中。更改nickname为您喜欢的任何内容、$IP_OF_INSTANCE实例的公共 IP 以及$USER您的计算机用户名。
Host nickname
    HostName $IP_OF_INSTANCE
    Port 22
    User $USER
    CheckHostIP no
    StrictHostKeyChecking no
    IdentityFile ~/.ssh/google_compute_engine

现在,您可以简单地使用 SSH:

ssh nickname

请注意,Linux 和 Mac 上~/.ssh的路径是,而 Windows 上的路径类似于C:\Users\<user>\.ssh

于 2021-06-27T16:19:14.613 回答
0

回复:#1:命令上没有标志可以在每个命令级别而不是每个实例级别(如您提到的“block-project-ssh-keys”)上更改此行为,但您可以在https://issuetracker.google.com/savedsearches/559662

于 2018-04-10T16:09:11.707 回答