本文档介绍如何使用 Identity-Aware Proxy (IAP) TCP 转发通过内部 IP 地址连接到虚拟机 (VM) 实例。
借助 IAP TCP,您可以建立加密隧道,再通过该隧道将 SSH 连接转发到虚拟机。连接到使用 IAP 的虚拟机时,IAP 会将 SSH 连接封装在 HTTPS 内部,然后再将连接转发到该虚拟机。然后,IAP 会检查您是否具有所需的 IAM 权限;如果您具有,则授予对虚拟机的访问权限。
如果您需要连接到没有外部 IP 地址的虚拟机,并且您无法使用 IAP,请查看仅限内部虚拟机的连接选项中列出的其他方法。
准备工作
- 创建防火墙规则以启用来自 IAP 的连接。
- 
  
  如果您尚未设置身份验证,请进行设置。身份验证用于验证您的身份,以便访问 Google Cloud 服务和 API。如需从本地开发环境运行代码或示例,您可以通过选择以下选项之一向 Compute Engine 进行身份验证:
  
   
   
     
   
  
   
   
     
   
  
   
   
     
   
  
 
 
 
  
    
      Select the tab for how you plan to use the samples on this page: ConsoleWhen you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication. gcloud- 
 
 
  
  
   
   
  
   
   
  
   
   
     
   
  
  
   
   
  
   
   
  
   
   
  
 
 
   
   
      安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI: gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。 
- Set a default region and zone.
 支持的操作系统Compute Engine 上提供的所有公共 Linux 映像都支持这些连接方法。对于 Fedora CoreOS 映像,您必须先设置 SSH 访问,然后才能使用这些方法。 连接到虚拟机如需连接到虚拟机,请完成以下任一标签页中的步骤。 控制台执行以下操作,使用 SSH-in-Browser 通过虚拟机的内部 IP 地址建立 SSH 连接隧道: - In the Google Cloud console, go to the VM instances page.
- In the list of virtual machine instances, click SSH in the row of the instance that you want to connect to.
 gcloud使用带有 --tunnel-through-iap标志的gcloud compute ssh命令,通过虚拟机的内部 IP 地址建立 SSH 连接隧道:- 通过运行以下命令连接到虚拟机: - gcloud compute ssh VM-NAME \ --tunnel-through-iap
- 
    在工作站上安装 IAP 桌面(如果尚未安装)。 
- 
    打开 IAP 桌面。此时会打开添加项目窗口。 
- 
    收到提示时,使用有权访问包含您要连接到的虚拟机的项目的 Google 账号登录。 
- 
    在添加项目窗口中,输入包含要连接的虚拟机的项目的项目 ID 或名称。 
- 
    在 Project Explorer 窗口中,再次右键点击虚拟机的名称,然后选择连接以连接到虚拟机。 
- 将 SSH 密钥添加到虚拟机(如果您尚未执行此操作)。
- 如果您的工作站尚未安装 PuTTY 应用,请下载 PuTTY 软件包文件。
- 在 Google Cloud 控制台中,前往虚拟机实例页面,找到要连接的虚拟机的名称。 
- 打开 PuTTY 应用;系统随即会打开一个连接配置窗口。
- 在 - Host Name字段中,输入与 SSH 密钥关联的用户名,以及要连接的虚拟机的名称。请使用以下格式:- USERNAME@VM_NAME - 替换以下内容: - USERNAME: 您的用户名。如果您在元数据中管理 SSH 密钥, 则用户名是您在创建 SSH 密钥时指定的名称。 对于 OS Login 账号,用户名在 Google 个人资料中定义。例如- cloudysanfrancisco_example_com或- cloudysanfrancisco。
- 
               
               NAME:虚拟机的名称。
 
- 在类别菜单中,依次点击连接> SSH > 身份验证。
- 在用于身份验证的私钥文件字段中,选择与您添加到虚拟机的公钥对应的 SSH 私钥文件。
- 在类别菜单中,依次点击连接 > 代理。
- 在代理类型部分中,选择本地。
- 在 Telnet 命令或本地代理命令字段中,输入以下内容: - gcloud.cmd compute start-iap-tunnel VM_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE - 请替换以下内容: - VM_NAME:您要连接到的虚拟机的名称。
- PORT_NUMBER:运行 sshd 守护程序的端口。默认- PORT_NUMBER为- 22。
- PROJECT_ID:托管要连接到的虚拟机的项目。
- ZONE:该虚拟机所在的可用区。
 
- 点击打开以连接到虚拟机。
 In the Google Cloud console, activate Cloud Shell. At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize. 将 VM_NAME替换为要连接到的虚拟机的名称。IAP 桌面要使用 IAP 桌面连接到虚拟机,请执行以下操作: PuTTY 应用执行以下操作,使用 PuTTY 通过虚拟机的内部 IP 地址建立 SSH 连接隧道: 问题排查如需查找诊断和解决失败的 SSH 连接问题的方法,请参阅排查 SSH 问题。 后续步骤- 了解如何管理对虚拟机的访问权限。
- 了解如何将文件传输到虚拟机。
- 了解与 Linux 虚拟机的 SSH 连接在 Compute Engine 上的工作原理。
 如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。 最后更新时间 (UTC):2025-10-29。 -