我创建了一个新的 Google Cloud 企业帐户。然后创建了一个新的 VM 实例。
当我尝试使用 Web 控制台进行 SSH 时,弹出窗口中出现错误:
由于意外错误,您无法连接到 VM 实例。请稍等片刻,然后重试。
大约 1 秒钟后,错误屏幕翻转如下:
代码:1006 请确保您可以为 TCP 主机名与 IAP 建立正确的 https 连接:https://tunnel.cloudproxy.app您可能无需使用 Cloud Identity-Aware Proxy 即可进行连接。
我已经检查了防火墙规则,发现有针对端口 22 的全 IP 入口规则。
我可以使用 gcloud 控制台连接到该实例。
我已删除该实例并重新创建它,其行为仍然相同。
我不知道该如何继续。
到目前为止,我已经根据以下建议进行了尝试:
- 使用 IAP IP 地址添加入口防火墙规则(已经存在允许来自所有 IP 地址的端口 22 流量的防火墙规则,所以我认为这不会产生任何影响 - 但我还是尝试了) - 这没有什么影响。
- 使用 IAP IP 地址调整入口防火墙规则以允许所有端口。这仍然不起作用。
- 添加了 IAP TCP 转发https://cloud.google.com/iap/docs/using-tcp-forwarding#grant-permission. 这仍然以同样的方式失败
- 我已进入实例的 IAP 配置,并确认我连接的主体被列为 IAP 安全隧道用户。请注意,我使用 GC 帐户管理员作为用户。
请注意,整个 Google Cloud 帐户专为此项目创建 - 因此这是一个全新的、普通的帐户和实例。
答案1
我不能说我知道你的问题的答案,但为了澄清起见,你有没有使用任何类型的代理?我过去在使用代理连接 Google Cloud 时遇到了问题。
为了进行调试,您可以尝试通过在线开发服务(例如 Amazon AWS Cloud9)进行 SSH 来查看它是否与您的特定网络设置有关。
抱歉,如果这没有帮助,但我看到了这个问题,并想至少看看我是否可以提供帮助。
答案2
根据您收到的错误消息,error 1006
使用内部 IP 通过 IAP 与虚拟机进行的 SSH 会话 1 小时不活动后,GCP 控制台 UI 中会出现该消息,这是 Google 端的会话超时。
您可以通过创建防火墙规则来允许 IAP 连接到您的 VM 实例,该规则将应用于您希望使用 IAP 访问的所有 VM 实例。从 IP 范围创建入口流量35.235.240.0/20
。此范围将包含 IAP 用于 TCP 转发的所有 IP 地址。正如您在防火墙规则中提到的那样,SSH 的端口是 22,因为这也是允许 SSH 连接的必要条件。
您还可以按照以下步骤允许 SSH 访问您的 VM 实例:
打开防火墙规则页面。
在防火墙规则页面,单击创建防火墙规则。
配置以下设置:
Name: allow-ingress-from-iap
Direction of traffic: Ingress
Target: All instances in the network
Source filter: IP ranges
Source IP ranges: 35.235.240.0/20
Protocols and ports: Select TCP and enter 22 to allow SSH.
- 单击“创建”。
您还可以检查 IAM 以授予使用 IAP TCP 转发的权限。建议为受信任的管理员授予以下角色:
roles/iap.tunnelResourceAccessor
(项目或虚拟机)
roles/compute.instanceAdmin.v1
(项目)
如需完整参考,您可以查看此文档用于 TCP 转发的 IAP和SSH 故障排除。