SSH 支持

本页介绍了如何使用 gcloud CLI 连接到您的 使用 SSH(或任何其他 TCP 协议)连接到本地机器的工作站。

Cloud Workstations 使用隧道在您的各个端口之间转发 TCP 流量 以及工作站上的端口 连接到互联网使用 gcloud CLI 中的凭据,并根据 目标工作站的 IAM 政策。

在本地端口和工作站之间建立 TCP 隧道后,您可以使用该隧道转发来自 SSH 客户端、curl 或任何其他使用 TCP 的应用的流量。

为方便起见,Cloud Workstations 提供了 gcloud workstations ssh 命令,该命令可通过单个 gcloud CLI 命令建立 TCP 隧道并运行 SSH 客户端。

对于所有其他用例,请使用 gcloud workstations start-tcp-tunnel 命令来建立 TCP 隧道并运行将使用 (例如 curl)。

准备工作

  1. 如果您还没有要连接的工作站, 设置工作站

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. 确保您在要连接的工作站上拥有 Cloud Workstations User IAM 角色。

    转到 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: 项目。如果省略,则当前项目为 。

  • REGION:工作站的集群所在的区域 例如 us-central1

  • CLUSTER_NAME:工作站集群的名称 包含该工作站

  • CONFIG_NAME:工作站配置的名称 包含这些工作站

  • WORKSTATION_PORT(可选):工作站上的端口 流量如果省略,流量将发送到端口 22。所有预配置的 Cloud Workstations 映像都包含在工作站端口 22 上运行的 SSH 服务器。

  • LOCAL_PORT(可选):本地主机端口, 流量。有效端口号的范围为 102465535。如果您省略 --local-host-port 标志或指定端口为 0,系统会自动选择一个未使用的端口。

  • WORKSTATION_NAME:工作站的名称。

可选:将标志和位置传递给底层 ssh 请在双短划线 (--) 后将它们附加到命令中。

使用 TCP 隧道将任意 TCP 流量转发到工作站

如需使用 ssh 以外的 TCP 应用连接到工作站,请使用 gcloud workstations start-tcp-tunnel 命令:

  1. 运行以下 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: 项目。如果省略,则当前项目为 。

    • REGION:工作站的集群所在的区域 例如 us-central1

    • CLUSTER_NAME:包含工作站的工作站集群的名称。

    • CONFIG_NAME:工作站的名称 包含此工作站的配置。

    • LOCAL_PORT(可选):本地主机端口, 流量。有效端口号为 102465535。如果您 省略 --local-host-port 标志,或指定 0 和未使用的端口 系统会自动选择端口

    • WORKSTATION_NAME:工作站的名称。

    • WORKSTATION_PORT:应将流量发送到的 work station 端口。预配置的 Cloud Workstations 映像 包括在工作站端口 22 上运行的 SSH 服务器。

  2. gcloud CLI 命令会执行与工作站的连接测试,打开隧道,然后显示端口号:

    Listening on port [LOCAL_PORT].
    

    发送到 localhost:LOCAL_PORT 的所有流量都会转发到 工作站该端口只能由本地计算机上运行的应用访问。

  3. gcloud CLI 保持运行状态,并打开另一个终端以运行 连接到工作站的应用

    例如,如果您在工作站上运行的服务器提供端口 WORKSTATION_PORT,并且您在前面的步骤中创建了一个 TCP 隧道,用于在本地端口 LOCAL_PORT 和工作站端口 WORKSTATION_PORT 之间转发流量,则您可以在本地计算机上运行 curl 以连接到工作站上的服务器:

    curl localhost:LOCAL_PORT
    Hello, world!
    
  4. 完成后,请返回启动 TCP 的终端 并中断 gcloud CLI Ctrl+C

使用不同端口上的 SSH 服务器

自定义容器映像也可以使用任何端口上的 SSH 服务器。如需支持来自 gcloud CLI 隧道的连接,您必须配置自定义 SSH 服务器以允许密码身份验证,并为目标用户设置空密码。Cloud Workstations 使用 Cloud IAM 以帮助确保仅将授权流量发送到 SSH 服务器。

后续步骤