gcloud-console "您无权查看此卡" => 无法打开 SSH 会话?

gcloud-console "您无权查看此卡" => 无法打开 SSH 会话?

我是 gcloud 的新手,需要管理计算引擎。我的角色如下:

  • 计算管理员
  • 服务帐户管理员
  • 组织管理员

然而,当我查看仪表板时,Compute Engine 卡显示

“您无权查看此卡”

据我了解,“Compute Admin”授予我对资源的完全访问权限。为什么我无法查看该卡?如果我单击“转到 Compute Engine”,我会获得计算引擎控制台并可以看到 VM 实例,但当我单击 SSH 下拉菜单时,我得到一个空白窗口。对话框弹出

“正在连接...将 SSH 密钥传输至虚拟机”

然后替换为

“连接失败由于意外错误,您无法连接到 VM 实例。请稍等片刻,然后重试。(#15)”

如果我在我的防火墙上执行 tcpdump,我看不到端口 22 上有来往流量。问题出现在具有固定 IP 的系统和具有 ntp 转换地址的系统上。问题出现在 Firefox 和 Chrome 上,也出现在 freebsd 和 windows 系统上。我可以从这些机器通过 SSH 连接到另一个系统。

我肯定遗漏了其他一些角色?

答案1

项目仪表盘属于整个项目,因此您至少需要一个项目查看者原始角色来查看其内容(或项目编辑者或项目管理员来编辑):

Cloud IAM > 文档 > 了解角色 > 原始角色

Compute Engine > 文档 > 访问控制概览 > 授予用户对虚拟机实例的 SSH 访问权限解释通过 SSH 访问实例需要哪些权限:

为了让用户能够使用 SSH 连接到虚拟机实例,但不授予他们管理 Compute Engine 资源的权限, 添加用户的公钥 添加到项目中,或将用户的公钥添加到特定实例。使用此方法,您可以避免将用户添加为项目成员,同时仍授予他们访问特定实例的权限。
要了解有关 SSH 和管理 SSH 密钥的更多信息,请阅读SSH 密钥概述
请注意,如果您将roles/compute.instanceAdmin.v1角色授予项目成员,只要实例未设置为以服务帐户运行,他们就可以使用 SSH 自动连接到实例。如果实例设置为以服务帐户运行,您还必须授予角色,然后roles/iam.serviceAccountUser成员才能连接到实例。如果您将成员添加为项目所有者或编辑者,他们也会自动拥有项目中 VM 实例的 SSH 访问权限。

请确保已启用到端口 22 的入口流量。

GCP Console => VPC network => Firewall rules

应该有一个防火墙规则,例如默认网络类型为default-allow-ssh,允许从任何地方将 SSH 入口流量传输到 TCP 端口 22 ( 0.0.0.0/0)。

您可以手动创建这样的规则:

GCP Console => VPC network => Firewall rules => Create Firewall Rule 
  Name:     my-allow-ssh
  Network:  mynet
  Targets:  All instances in the network
  Source filter:    IP Ranges
  Source IP ranges:     0.0.0.0/0 
  Protocols and ports:  Specified protocols and ports
    tcp: ports 22

如果您可以连接到多个实例,则可能是 VPC 防火墙规则使用网络标签来区分目标。您应该检查是否可以连接到的实例:

GCP Console => Compute Engine => VM instances => my-instance-name => Network tags

然后在现有的防火墙规则中寻找该标签:

GCP Console => VPC network => Firewall rules => my-ssh-enable => Targets => Target tags

然后您应该使用该网络标签来标记您想要连接的虚拟机实例:

GCP Console => Compute Engine => VM instances => my-instance-name => Edit => Network tags

至于“意外错误”,按照消息中的指示操作并稍后“重试”是有意义的。这可能是一个间歇性错误。

相关内容