本文档介绍如何使用 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:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 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 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
:该虚拟机所在的可用区。
- 点击打开以连接到虚拟机。
- 了解如何管理对虚拟机的访问权限。
- 了解如何将文件传输到虚拟机。
- 了解与 Linux 虚拟机的 SSH 连接在 Compute Engine 上的工作原理。
支持的操作系统
Compute Engine 上提供的所有公共 Linux 映像都支持这些连接方法。对于 Fedora CoreOS 映像,您必须先设置 SSH 访问,然后才能使用这些方法。
连接到虚拟机
如需连接到虚拟机,请完成以下任一标签页中的步骤。
控制台
执行以下操作,使用浏览器中的 SSH 功能通过虚拟机的内部 IP 地址建立 SSH 连接隧道:
gcloud
使用带有
--tunnel-through-iap
标志的gcloud compute ssh
命令,通过虚拟机的内部 IP 地址建立 SSH 连接隧道: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 问题。
后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-10-04。
-