GCP私有网络无公网IP的VM实例无法通过控制台SSH访问问题求助
问题原因结论
你遇到的问题确实可能由GCP相关API的启用/停用状态变更导致。此前你可以直接通过控制台SSH登录无公网IP的VM实例,依赖的是GCP Identity-Aware Proxy(IAP)的TCP转发能力,无需实例绑定公网IP即可建立SSH连接。如果IAP、OS Login等核心依赖API被意外停用,控制台会自动回退到要求实例拥有公网IP的常规SSH逻辑,就会触发你看到的报错。
排查思路
- 检查IAP核心API的启用状态,执行命令:
gcloud services list --enabled | grep iap,确认iap.googleapis.com处于已启用状态。如果该API被停用,执行gcloud services enable iap.googleapis.com即可恢复。 - 检查OS Login API的启用状态,执行命令:
gcloud services list --enabled | grep oslogin,确认oslogin.googleapis.com处于已启用状态。该API是控制台SSH关联用户身份、完成权限校验的核心依赖,停用后会直接导致IAP SSH链路不可用。 - 校验VPC防火墙规则,确认存在允许IAP地址段
35.235.240.0/20访问实例22端口的入方向规则,即使API状态正常,防火墙规则被误删也会触发无公网IP的报错提示。 - 检查VM实例的自定义元数据配置,确认
enable-oslogin参数的值为TRUE,该参数被意外修改为FALSE时,也会导致IAP SSH连接失败。 - 校验当前操作账号的IAM权限,确认账号拥有
roles/iap.tunnelResourceAccessor、roles/compute.instanceAdmin.v1等包含IAP SSH访问权限的角色,权限被收回也会导致控制台SSH按钮不可用。
内容的提问来源于stack exchange,提问作者Anish Karmi
相关产品推荐
相关产品推荐

