可以 ssh 到 GCP Private 实例但无法通过云访问应用程序界面 shell
Can ssh to GCP Private instance but cant access application interface through cloud shell
这是我所拥有的:
- 没有外部 IP 的 GCP 实例(在 VPC 和 NAT 上),它接受 HTTP HTTPS 请求
- 防火墙允许所有实例的所有端口上的 0.0.0.0 入口 TCP 以及 IAP 的 IP 35.235.240.0/20
我通过 IAP 和 运行 端口 5000 和 0.0.0.0 主机上的终端中的应用程序通过 SSH 连接到实例并让终端挂起,但是当我通过云并行连接时 shell并通过 IAP ssh 到此实例,然后单击端口 5000 上的 Web 预览,我得到“无法连接到端口 5000 上的服务器”。
我说过这可能是阻止 IAP 的防火墙规则,所以这就是为什么我允许访问 IAP 的所有端口(用于测试)
P.S:该过程已在具有外部 IP 的 VM 上完成并得到验证(但无需连接到云 shell 进行 Web 预览,我检查了 UI 与浏览器中的 IP:port )
我错过了什么?
您可能正在遵循 Building Internet Connectivity for private VMs and this part on Configuring IAP tunnels for interacting with instances and the use of TCP Forwarding in IAP. By Tunneling other TCP connections 上的指南:
"The local port tunnels data traffic from the local machine to the remote machine in an HTTPS stream. IAP then receives the data, applies access controls, and forwards the unwrapped data to the remote port."
您可以通过以下方式创建通向 VM 实例端口的加密隧道:
gcloud compute start-iap-tunnel INSTANCE_NAME INSTANCE_PORT \
--local-host-port=localhost:LOCAL_PORT \
--zone=ZONE
我猜你想用 INSTACE_PORT 和 LOCAL_PORT 一样,5000.
注意它是 known limitations。
这是我所拥有的:
- 没有外部 IP 的 GCP 实例(在 VPC 和 NAT 上),它接受 HTTP HTTPS 请求
- 防火墙允许所有实例的所有端口上的 0.0.0.0 入口 TCP 以及 IAP 的 IP 35.235.240.0/20
我通过 IAP 和 运行 端口 5000 和 0.0.0.0 主机上的终端中的应用程序通过 SSH 连接到实例并让终端挂起,但是当我通过云并行连接时 shell并通过 IAP ssh 到此实例,然后单击端口 5000 上的 Web 预览,我得到“无法连接到端口 5000 上的服务器”。 我说过这可能是阻止 IAP 的防火墙规则,所以这就是为什么我允许访问 IAP 的所有端口(用于测试)
P.S:该过程已在具有外部 IP 的 VM 上完成并得到验证(但无需连接到云 shell 进行 Web 预览,我检查了 UI 与浏览器中的 IP:port )
我错过了什么?
您可能正在遵循 Building Internet Connectivity for private VMs and this part on Configuring IAP tunnels for interacting with instances and the use of TCP Forwarding in IAP. By Tunneling other TCP connections 上的指南:
"The local port tunnels data traffic from the local machine to the remote machine in an HTTPS stream. IAP then receives the data, applies access controls, and forwards the unwrapped data to the remote port."
您可以通过以下方式创建通向 VM 实例端口的加密隧道:
gcloud compute start-iap-tunnel INSTANCE_NAME INSTANCE_PORT \
--local-host-port=localhost:LOCAL_PORT \
--zone=ZONE
我猜你想用 INSTACE_PORT 和 LOCAL_PORT 一样,5000.
注意它是 known limitations。