我在 GCP 中有一个反向代理实例,它有一个外部 IP,但它后面有一堆后端实例,它们没有外部 IP,但位于同一个 VPC 中。这个想法是将攻击面缩小到只有反向代理;非常标准的东西。
我遇到的问题是,ssh 进入后端实例仍然有用(用于故障排除或部署目的。我正在使用 ansible)。我有什么办法可以在本地开发机器中创建一个可以直接访问非公共实例的网络接口(将来,CI 机器也需要访问权限)?换句话说,ssh 到内部 ip。我现在要做的就是为所有实例分配外部临时 ip,以便能够直接使用 ansible 访问它们,但就像我说的那样,为了提高安全性,我只想将反向代理暴露给互联网
我希望避免创建跳转点实例,因为为 ansible 创建 ssh 隧道以到达每个后端实例似乎很麻烦。通常,我猜这听起来像是 VPN 的工作,但我对 VPC 还不熟悉,我不知道是否有其他方法可以满足 VPC 或 GCP 中的这一要求。此用例的标准做法是什么?
答案1
有四种常用方法可以连接到仅具有私有 IP 地址的 Google Cloud Compute Engine 实例。此列表从最简单到最困难。
方法 1:使用 Google Cloud Console
Google Cloud Console 支持 Compute Engine 实例的 SSH。转到 Compute Engine。每个实例都有一个 SSH 按钮。
方法 2:使用 Google Cloud SDK CLI
gcloud compute ssh user@INSTANCE_NAME
注意:仅支持 Linux。不适用于 Windows。
方法 3:OpenVPN 堡垒主机
在小型 Compute Engine 实例上安装 OpenVPN,在桌面上安装客户端。这是我首选的方法,因为我的工具可以轻松与 VPC 联网。OpenVPN 是免费的,但实例不是。除非我需要高性能网络,否则我会使用 f1-micro 实例。
方法4:SSH远程端口转发
您可以创建一个 SSH 隧道,然后将其连接到 VPC 中的任何实例。互联网上有很多示例。此方法还需要一个小型 Compute Engine 实例,但您可以锁定此实例以仅接受来自您的网络(IP 或 CIDR 块)的 SSH 流量。
方法 5:启动 IAP 隧道(身份感知代理)
gcloud beta compute start-iap-tunnel <OPTIONS>
此方法使用方法 1 和方法 2 背后的技术。此方法使用 Google Cloud 管理的计算实例创建隧道。此方法对带宽有限制(未发布)。对于 SSH 流量来说,这没问题。