SSH 支援

本頁說明如何使用 gcloud CLI,透過 SSH (或其他 TCP 通訊協定) 從本機連線至工作站。

Cloud Workstations 會使用通道轉送本機通訊埠與工作站通訊埠之間的 TCP 流量,而不會在網際網路上公開工作站。系統會使用 gcloud CLI 的憑證驗證連線,並根據目標工作站的 IAM 政策授權。

在本機通訊埠與工作站之間建立 TCP 通道後,您可以使用該通道轉送來自 SSH 用戶端、curl 或任何其他使用 TCP 的應用程式的流量。

為方便起見,Cloud Workstations 提供 gcloud workstations ssh 指令,可建立 TCP 通道並執行 SSH 用戶端,只需單一 gcloud CLI 指令即可。

如要用於其他用途,請使用 gcloud workstations start-tcp-tunnel 指令建立 TCP 通道,並在另一個終端機中執行將使用該通道的應用程式 (例如 curl)。

事前準備

  1. 如果沒有要連線的工作站,請設定工作站

  2. After installing the Google Cloud CLI, initialize it by running the following command:

    gcloud init

    If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  3. 請確認您在要連線的工作站上擁有 Cloud Workstations User IAM 角色。

    前往「IAM」頁面

  4. 使用 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:包含工作站的專案的專案 ID。 Google Cloud 如果省略此欄位,系統會使用目前的專案。

    • REGION:工作站叢集所在的區域,例如 us-central1

    • CLUSTER_NAME:工作站所屬的工作站叢集名稱。

    • CONFIG_NAME:包含這個工作站的工作站設定名稱。

    • WORKSTATION_PORT (選用):工作站上的通訊埠,流量應傳送至該通訊埠。如果省略,流量會傳送至通訊埠 22。所有預先設定的 Cloud Workstations 映像檔都包含在工作站通訊埠 22 上執行的 SSH 伺服器。

    • LOCAL_PORT (選用):傳送流量的 localhost 通訊埠。有效通訊埠編號為 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:包含工作站的專案的專案 ID。 Google Cloud 如果省略此欄位,系統會使用目前的專案。

      • REGION:工作站叢集所在的區域,例如 us-central1

      • CLUSTER_NAME:工作站所屬的工作站叢集名稱。

      • CONFIG_NAME:包含這個工作站的工作站設定名稱。

      • LOCAL_PORT (選用):傳送流量的 localhost 通訊埠。有效通訊埠編號為 102465535。如果省略 --local-host-port 旗標或指定 0 的通訊埠,系統會自動選取未使用的通訊埠。

      • WORKSTATION_NAME:工作站名稱。

      • WORKSTATION_PORT:要將流量傳送至的工作站通訊埠。預先設定的 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 通道的終端機,然後按下 Control+C 中斷 gcloud CLI。

    在不同通訊埠上使用 SSH 伺服器

    自訂容器映像檔也可以使用任何通訊埠上的 SSH 伺服器。如要支援來自 gcloud CLI 通道的連線,您必須設定自訂 SSH 伺服器,允許密碼驗證,並將目標使用者設為空白密碼。Cloud Workstations 會使用 Cloud IAM,確保只有授權流量會傳送至 SSH 伺服器。

    後續步驟