觀點 · 資訊分享

Google Cloud Run 可以直接 SSH 進容器了:除錯不用再猜,憑證 5 分鐘就失效

Google Cloud Run 推出 SSH 預覽功能,開發者可以用 gcloud 指令連進正在執行的容器裡查檔案、看設定、排除問題。連線經過 IAP 驗證、用 5 分鐘效期的 SSH 憑證,單次最長 24 小時。

發布
2026-10-07
篇幅
約 3 分鐘 · 1,553 字
結構
7 節 + 3 題常見問題
標籤
#Google Cloud#Cloud Run#SSH#容器除錯
Google Cloud Run 可以直接 SSH 進容器了:除錯不用再猜,憑證 5 分鐘就失效

一句話看懂:Google Cloud Run 推出 SSH 預覽功能,開發者可以直接連進正在執行的容器裡查問題,連線要經過 IAP 與 IAM 驗證,憑證 5 分鐘就失效。

Cloud Run 支援 SSH(預覽)資訊圖卡:直接連進正在跑的容器查問題,連線要過 IAP 與 IAM 驗證,不用自己開後門

先用白話講:為什麼「能 SSH 進容器」很重要?

想像你租了一台會自己開的無人車(Cloud Run),平常你只要說目的地,它就幫你開到,不用管引擎、輪胎。但有一天車子在路上怪怪的,你只能看行車紀錄(日誌)猜原因,沒辦法打開引擎蓋檢查。

SSH 就像是一把能打開引擎蓋的鑰匙,讓你連進正在執行的電腦或容器,直接輸入指令、看檔案、查設定。Cloud Run 這次終於提供了官方的鑰匙,而且這把鑰匙每 5 分鐘就會換一次。

發生什麼事

Google Cloud 在 10 月 7 日的版本說明公布:Cloud Run 服務與執行個體的 SSH 功能進入預覽,可以建立安全的互動式殼層連線,進到正在執行的執行個體裡。

依官方文件,它的安全設計是這樣:

  • IAP 把關:連線先經過 Identity-Aware Proxy 的驗證與授權,還能依 IP 或裝置條件限制
  • 短效憑證:OS Login 用 SSH 憑證驗證使用者,gcloud 發出的憑證 5 分鐘就過期,每次登入都重新檢查 IAM 權限
  • 用完就收:Cloud Run 只在連線期間把 Google 管理的 sshd 等程式放進容器,結束後移除;容器裡原本的 SSH 設定會被忽略

使用限制

限制 內容
單次連線 最長 24 小時,時間到要重連
閒置 1 小時沒動作,IAP 會斷線
支援範圍 第二代執行環境的服務與 Cloud Run 執行個體
Windows 要用 OpenSSH,不支援 PuTTY
費用 計算網路傳出流量;沒有執行中的執行個體時會啟動一個並照常計費

給開發者的技術細節

gcloud services enable run.googleapis.com cloudresourcemanager.googleapis.com iap.googleapis.com oslogin.googleapis.com
gcloud beta run services update SERVICE --ssh
gcloud beta run services ssh SERVICE --region=REGION --project=PROJECT_ID
  • 服務要手動開啟 SSH;Cloud Run 執行個體則預設開啟
  • 可以加 --revision、--instance 指定要連的版本或執行個體,執行個體 ID 可以在日誌的 labels 欄位找到
  • 需要的 IAM 角色包括 roles/run.sshRoot、roles/iap.tunnelResourceAccessor 等
  • 組織可以用自訂限制條件的組織政策,全面停用 Cloud Run 的 SSH 除錯
  • 多容器服務若設定了啟動順序,SSH 冷啟動時可能回 HTTP 500,官方建議先送一個請求讓執行個體醒著,或設定最少執行個體數

我的看法

用 Cloud Run 部署的專案,最痛的就是「本機正常、上線出錯」,只能一直加日誌、重新部署、再看日誌。能直接進容器看環境變數有沒有吃到、檔案有沒有在、套件版本對不對,除錯時間可以省很多。

但我會把它當成「急診工具」,不是日常操作。三個習慣建議養成:用完就用 --no-ssh 關掉、run.sshRoot 權限只給真的需要的人、在容器裡手動修好的東西一定要回頭改進映像檔,因為執行個體一重啟就全部消失。

名詞小辭典

  • SSH:一種加密的遠端連線方式,讓你在自己的電腦上操作遠端機器的指令列。
  • Cloud Run:Google 的無伺服器容器服務,交出容器映像檔就能執行,不用管主機。
  • IAP(Identity-Aware Proxy):Google 的身分驗證代理,確認你是誰、有沒有權限後才放行連線。
  • IAM:雲端的權限管理系統,決定誰能對哪些資源做什麼事。

資料來源

常見問題

Cloud Run 是什麼?以前為什麼不能 SSH?
Cloud Run 是 Google 的無伺服器容器服務,你只要給它容器映像檔,它負責執行與擴展。因為不需要管主機,以前也沒有官方的方式能直接連進正在執行的容器,除錯大多只能看日誌。
要怎麼連進去?
先啟用 Cloud Run Admin、Cloud Resource Manager、IAP、OS Login 四個 API 並更新 gcloud,再對服務開啟 SSH(gcloud beta run services update 服務名稱 --ssh),然後用 gcloud beta run services ssh 服務名稱 連線。
在容器裡改的設定會保留嗎?
只要容器還活著就會保留,用 exit 離開也不會重啟容器;但執行個體一重啟,改動就不見了。官方也提醒 SSH 期間會覆寫映像檔裡的主機金鑰,直到執行個體重啟。
LINE