本页面介绍如何使用 gcloud
CLI 通过 SSH(或任何其他 TCP 协议)从本地机器连接到工作站。
Cloud Workstations 使用隧道在本地机器上的端口与工作站的端口之间转发 TCP 流量,而不会向互联网公开您的工作站。连接使用 gcloud
CLI 中的凭据进行身份验证,并根据目标工作站的 IAM 政策进行授权。
在本地端口和工作站之间建立 TCP 隧道后,您就可以用它来转发来自 SSH 客户端、curl 或任何其他使用 TCP 的应用的流量了。
为方便起见,Cloud Workstations 提供了 gcloud workstations ssh
命令,该命令可建立 TCP 隧道并使用单个 gcloud
CLI 命令运行 SSH 客户端。
对于所有其他用例,请使用 gcloud workstations start-tcp-tunnel
命令建立 TCP 隧道,并在单独的终端中运行使用该隧道(例如 curl
)的应用。
准备工作
如果您还没有要连接的工作站,请设置工作站。
安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:
gcloud init
确保您在要连接的工作站上拥有 Cloud Workstations User IAM 角色。
使用 SSH 连接到工作站
如需与工作站建立安全的 SSH 连接,请使用 gcloud workstations ssh
命令,该命令会启动 TCP 隧道并运行 SSH 客户端。
如需将命令复制到复制并粘贴缓冲区,请点击
复制代码示例,然后将命令粘贴到本地终端窗口中:gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
--port=WORKSTATION_PORT \
--local-host-port=localhost:LOCAL_PORT \
WORKSTATION_NAME
替换以下值:
PROJECT_ID
:工作站所属项目的 Google Cloud 项目 ID。如果省略,系统会使用当前项目。REGION
:工作站集群所在的区域,例如us-central1
。CLUSTER_NAME
:包含工作站的工作站集群的名称。CONFIG_NAME
:包含此工作站的工作站配置的名称。WORKSTATION_PORT
(可选):工作站上应向其发送流量的端口。如果省略此参数,流量将发送到端口22
。所有预配置的 Cloud Workstations 映像都包含一个在工作站端口22
上运行的 SSH 服务器。LOCAL_PORT
(可选):将发送流量的 localhost 端口。有效端口号为1024
到65535
。如果您省略--local-host-port
标志或指定端口0
,则系统会自动选择未使用的端口。WORKSTATION_NAME
:工作站的名称。
可选:如需将标记和位置传递给底层 ssh
实现,请将它们附加到命令中双短划线 (--
) 后。
使用 TCP 隧道将任意 TCP 流量转发到您的工作站
如需使用 ssh
以外的 TCP 应用连接到工作站,请使用 gcloud workstations start-tcp-tunnel
命令:
运行以下
gcloud
CLI 命令,创建经过身份验证的 TCP 隧道。如需将命令复制到复制并粘贴缓冲区,请点击
复制代码示例,然后将命令粘贴到本地终端窗口中:gcloud workstations start-tcp-tunnel \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ --local-host-port=localhost:LOCAL_PORT \ WORKSTATION_NAME \ WORKSTATION_PORT
替换以下值:
PROJECT_ID
:工作站所属项目的 Google Cloud 项目 ID。如果省略,系统会使用当前项目。REGION
:工作站集群所在的区域,例如us-central1
。CLUSTER_NAME
:包含工作站的工作站集群的名称。CONFIG_NAME
:包含此工作站的工作站配置的名称。LOCAL_PORT
(可选):将发送流量的 localhost 端口。有效端口号为1024
到65535
。如果您省略--local-host-port
标志或指定端口0
,则系统会自动选择未使用的端口。WORKSTATION_NAME
:工作站的名称。WORKSTATION_PORT
:流量应发送到的工作站端口。预配置的 Cloud Workstations 映像包含一个在工作站端口22
上运行的 SSH 服务器。
gcloud
CLI 命令可执行与工作站的连接测试,打开隧道,然后显示端口号:Listening on port [LOCAL_PORT].
发送到
localhost:LOCAL_PORT
的所有流量都会转发到工作站。该端口只能由本地计算机上运行的应用访问。让
gcloud
CLI 保持运行状态,然后打开另一个终端,以运行连接到工作站的应用。例如,如果您在提供端口 WORKSTATION_PORT 的工作站上运行服务器,并且在上一步中创建了用于在本地端口 LOCAL_PORT 和工作站端口 WORKSTATION_PORT 之间转发流量的 TCP 隧道,则可以在本地机器上运行
curl
,以连接到工作站上的服务器:curl localhost:LOCAL_PORT Hello, world!
完成后,返回到启动 TCP 隧道的终端,然后按 Ctrl+C 中断
gcloud
CLI。
在不同端口上使用 SSH 服务器
自定义容器映像也可以在任何端口上使用 SSH 服务器。如需支持来自 gcloud
CLI 隧道的连接,您必须配置自定义 SSH 服务器以允许使用密码进行身份验证,并将目标用户设置为空密码。Cloud Workstations 使用 Cloud IAM 帮助确保仅将授权的流量发送到 SSH 服务器。
后续步骤
- 为自定义容器映像在 SSH 会话中设置容器环境变量
- 为自定义容器映像启用 X11 转发