【问题标题】:gcloud compute ssh with local key & project restrictions具有本地密钥和项目限制的 gcloud 计算 ssh
【发布时间】:2018-09-20 02:55:13
【问题描述】:

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

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

gcloud compute ssh name-of-vm

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

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

失败是因为他只有访问和管理此虚拟机的权限

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

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

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

我还尝试尽量减少对该用户的访问。

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

【问题讨论】:

    标签: ssh google-cloud-platform gcloud google-cloud-iam


    【解决方案1】:

    您可以做的是enable-oslogin for all the users you need 包括管理员,在实例上启用操作系统登录会在这些实例上禁用基于元数据的 SSH 密钥配置。

    启动、停止和通过 SSH 连接到实例的角色是角色/compute.instanceAdmin(考虑到这个角色目前处于测试阶段) you can check here a list of the Compute Engine roles available 所以你可以选择一种更适合您的需求。

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

    【讨论】:

      【解决方案2】:

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

      1. ~/.ssh下创建一个名为config的文件
      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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多