![无法从 Google Cloud 网络外部通过 SSH 进入 GCE VM](https://linux22.com/image/739679/%E6%97%A0%E6%B3%95%E4%BB%8E%20Google%20Cloud%20%E7%BD%91%E7%BB%9C%E5%A4%96%E9%83%A8%E9%80%9A%E8%BF%87%20SSH%20%E8%BF%9B%E5%85%A5%20GCE%20VM.png)
我能够通过 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
您正在使用哪个 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