本頁說明如何使用 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)。
事前準備
如果沒有要連線的工作站,請設定工作站。
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入
gcloudCLI。確認您在要連線的工作站上,具備 Cloud Workstations 使用者 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 設定和 .ssh/config 檔案
使用 gcloud workstations ssh 時,指令會透過 localhost 轉送連線。因此,系統不會自動套用 ~/.ssh/config 檔案中以工作站名稱為依據的 Host 項目。
如要套用自訂 SSH 設定,請選擇下列其中一個選項:
方法 1:在指令列傳遞旗標
您可以在雙破折號 (--) 後方附加 SSH 選項,直接傳遞至基礎 SSH 用戶端:
gcloud workstations ssh \
--project=PROJECT_ID \
--region=REGION \
--cluster=CLUSTER_NAME \
--config=CONFIG_NAME \
WORKSTATION_NAME \
-- -o SSH_OPTION=VALUE
方法 2:使用永久 TCP 通道和 .ssh/config
如要使用 ~/.ssh/config 檔案,請按照下列步驟操作:
在獨立終端機視窗中啟動持續性 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 \ 22在本機電腦的
~/.ssh/config檔案中新增設定區塊:Host WORKSTATION_NAME HostName localhost Port LOCAL_PORT User user # Disable host key checking for ephemeral cloud workstations StrictHostKeyChecking no UserKnownHostsFile /dev/null # Add any other SSH options here使用標準 SSH 連線至工作站:
ssh WORKSTATION_NAME
使用 TCP 通道將任意 TCP 流量轉送至工作站
如要使用 ssh 以外的 TCP 應用程式連線至工作站,請使用 gcloud workstations start-tcp-tunnel 指令:
執行下列
gcloudCLI 指令,建立經過驗證的 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 伺服器。
gcloudCLI 指令會與工作站執行連線測試、開啟通道,然後顯示通訊埠號碼:Listening on port [LOCAL_PORT].所有傳送至
localhost:LOCAL_PORT的流量都會轉送至工作站。只有在本機電腦上執行的應用程式才能存取通訊埠。讓
gcloudCLI 繼續執行,並開啟另一個終端機,執行連線至工作站的應用程式。舉例來說,假設您在工作站上執行的伺服器提供通訊埠 WORKSTATION_PORT,且您在上一個步驟中建立了 TCP 通道,在本機通訊埠 LOCAL_PORT 和工作站通訊埠 WORKSTATION_PORT 之間轉送流量,則可在本機電腦上執行
curl,連線至工作站上的伺服器:curl localhost:LOCAL_PORT Hello, world!完成後,返回啟動 TCP 通道的終端機,然後按下 Control+C 鍵中斷
gcloudCLI。
使用不同通訊埠上的 SSH 伺服器
自訂容器映像檔也可以在任何通訊埠上使用 SSH 伺服器。如要支援來自 gcloud CLI 通道的連線,您必須設定自訂 SSH 伺服器,允許密碼驗證,並將目標使用者設為空白密碼。Cloud Workstations 會使用 Cloud IAM,確保只有授權流量會傳送至 SSH 伺服器。
讓 SSH 工作階段保持連線
如果網路連線中斷,SSH 工作階段就會中斷連線。如要在中斷連線時保持程序執行,並在稍後重新附加至工作階段,請使用 tmux 等工具。
如要在工作站上安裝 tmux,請按照下列步驟操作:
在目前的工作階段中手動安裝
tmux,即可立即使用:sudo apt update sudo apt install -y tmux設定工作站,在啟動時安裝
tmux。建立或附加至/home/user/.workstation/customize_environment檔案,加入下列指令:#!/bin/bash sudo apt update sudo apt install -y tmux詳情請參閱「自訂現有工作站映像檔,不進行擴充」。
將檔案設為可執行,以便在工作站啟動時執行:
chmod +x /home/user/.workstation/customize_environment
安裝 tmux 後:
連線至工作站:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME從工作站啟動新的 tmux 工作階段:
tmux如果連線中斷,請重新連線並在本機終端機執行下列指令,將工作階段附加至連線:
gcloud workstations ssh \ --project=PROJECT_ID \ --region=REGION \ --cluster=CLUSTER_NAME \ --config=CONFIG_NAME \ WORKSTATION_NAME \ -- -t tmux attach
後續步驟
- 在 SSH 工作階段中設定容器環境變數,用於自訂容器映像檔
- 為自訂容器映像檔啟用 X11 轉送