无法从 Google Cloud 网络外部通过 SSH 进入 GCE VM

无法从 Google Cloud 网络外部通过 SSH 进入 GCE VM

我能够通过 Google Cloud Web SSH 接口访问运行 Ubuntu 16 的新配置的 Google 计算机实例,也可以从其他 Google 计算实例(甚至来自不同项目的实例)访问

但是当我尝试从家里的电脑 ssh 进入实例时,它显示“连接超时”

我已经检查了 UFW,它设置为允许 22/tcp。

还设置了默认的 ssh 防火墙入口规则:default-allow-ssh Ingress 应用于所有
IP 范围:0.0.0.0/0 tcp:22 允许

不确定这里的问题是什么。我的家庭网络可以通过 SSH 访问其他 GCE 实例,并且此特定 GCE 实例的 Web 服务器也可以访问。

似乎我的家庭网络的 SSH 连接被阻止了。

答案1

帖子太长,无法评论……

我希望该命令能给我们提供更多线索 :(。如果不研究项目 FW 规则和 VM 网络标签,将很难缩小范围。

正如您已经提到的那样,您拥有正确的防火墙规则,我只能认为您尚未将您的 SSH 密钥(从您的家用计算机)上传到实例中

你可以在 Google 文档中找到有关如何生成这些密钥并将其上传到链接 [1] 的明确说明。

完成后,正确的 ssh 命令是:

ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

在哪里:

  • [PATH_TO_PRIVATE_KEY] 是您的私有 SSH 密钥文件的路径。
  • [USERNAME] 是连接到实例的用户的名称。您的 SSH 公钥的用户名是在创建 SSH 密钥时指定的。如果实例具有该用户的有效 SSH 公钥并且您具有匹配的 SSH 私钥,则可以以该用户的身份连接到实例。
  • [EXTERNAL_IP_ADDRESS] 是您的实例的外部 IP 地址。

如果这不起作用,你应该尝试联系 GCP 支持,可能会有一些你看不到的东西,例如,你的项目可能是某个组织的一部分,并且处于 VPC 边界之下,从而阻止外部网络访问 [1]

[1]https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys

[2]https://cloud.google.com/vpc-service-controls/

答案2

您正在使用哪个 IP?

如果您想从 GCP 外部进行 SSH,则必须使用实例的外部 IP。请参阅 GCP 官方文档,了解如何连接到您的实例(高级方法)。

一旦您能够访问您的实例,您可能需要配置 OS Login 以使事情变得更容易。

“OS Login 允许您使用 Compute Engine IAM 角色来管理对 Linux 实例的 SSH 访问,并且可以通过在元数据中添加和删除 SSH 密钥来手动管理实例访问。

请参阅链接[2]配置OS登录

如果上述建议不起作用,请提供带有 -vvv 的 ssh 命令的输出以了解发生了什么。

[1]https://cloud.google.com/compute/docs/instances/connecting-advanced#thirdpartytools

[2]https://cloud.google.com/compute/docs/instances/managing-instance-access

相关内容