使用 gcloud CLI 進行 SSH 連線的完整指南
更新日期: 2025 年 3 月 4 日
本文為 雲端 基本介紹系列文,第 1 篇:
- 伺服器是什麼?新手入門指南
- IP 是什麼?公開 IP 與內部 IP:深入了解與應用場景解析
- 什麼是部署?初學者的完整指南
- 雲端運算中的網站部署:從 IaaS 到 SaaS 的最佳實踐
- Zeabur 是什麼?新手也能輕鬆上手的 PaaS 平台
- 初學者指南:深入了解 GCP 虛擬機 (Google Cloud Virtual Machines)
- 初學者指南:深入了解 AWS 虛擬機 (EC2)
- AWS EC2 與 GCP VM 初學者指南:兩大雲端虛擬機服務的差異詳解
- SSH 連線是什麼?初學者必看的安全連線工具指南
- 什麼是 SCP(安全複製協定):初學者指南
- Google Cloud Command Line Interface (gcloud CLI) 是什麼?新手指南
- 使用 gcloud CLI 進行 SSH 連線的完整指南 👈進度
在使用 Google Cloud Platform (GCP) 管理虛擬機 (VM) 時,SSH 連線是必不可少的技能之一。
gcloud CLI (Command Line Interface) 是 Google 提供的強大工具,不僅能輕鬆管理 GCP 資源,還能快速、安全地透過 SSH 連接至 VM 實例。
本篇文章將一步步介紹如何使用 gcloud CLI 進行 SSH 連線,適合初學者學習與應用。
背景知識
gcloud CLI 是什麼?
gcloud CLI 是 Google Cloud SDK 的一部分,允許你使用終端機指令來管理 GCP 中的各種服務與資源。透過 gcloud CLI,你可以:
- 建立、管理 VM 實例
- 部署應用程式
- 管理儲存空間與網路設定
- 進行 SSH 連線等操作
什麼是 SSH?
SSH (Secure Shell) 是一種安全的網路通訊協議,通常用於在不安全的網路上安全地連接到遠端伺服器。它提供加密通道,確保數據在傳輸過程中的機密性與完整性。
- 常見用途: 遠端登入、遠端指令執行、檔案傳輸 (SCP, SFTP)
- 主要組件: 客戶端 (如
ssh
指令) 和伺服器端 (如 SSH 服務)
連接前的準備工作
安裝 Google Cloud SDK
如果尚未安裝 gcloud CLI,請依以下步驟操作:
# 安裝 gcloud CLI
curl -sSL https://sdk.cloud.google.com | bash
# 重新加載 Shell
exec -l $SHELL
初始化 gcloud CLI
在安裝完成後,進行初始化以設定專案與認證:
gcloud init
確認 SSH 金鑰設置
gcloud CLI 會自動幫你生成 SSH 公私鑰,若無需手動配置,確認金鑰路徑:
ls ~/.ssh/
如果你有自訂金鑰,則可以手動新增金鑰到 GCP:
gcloud compute os-login ssh-keys add --key-file ~/.ssh/id_rsa.pub
使用 gcloud CLI 進行 SSH 連線的方法
基本指令格式
gcloud compute ssh [VM_NAME] --zone=[ZONE]
VM_NAME
: 你的虛擬機名稱 (例如 my-vm)ZONE
: VM 所在的 GCP 區域 (例如 us-central1-a)
實際範例
gcloud compute ssh my-vm --zone=us-central1-a
設置特定使用者進行 SSH 連線
gcloud compute ssh [USER]@[VM_NAME] --zone=[ZONE]
自訂 SSH 選項
gcloud compute ssh my-vm --zone=us-central1-a -- -L 8080:localhost:80
-L 8080:localhost:80
: 設置 SSH 隧道 (SSH Tunnel),將本機的 8080 端口轉發到遠端伺服器的 80 端口。
gcloud SSH 與一般 SSH 差異比較
一般 SSH 連線的原理
當你使用傳統的 ssh
指令連線到遠端伺服器時,通常會經歷以下步驟:
1️⃣ 產生 SSH 金鑰對 (Public/Private Key Pair):
ssh-keygen -t rsa -f ~/.ssh/id_rsa
2️⃣ 將公鑰手動複製到遠端伺服器:
ssh-copy-id user@remote-server
或者手動編輯 .ssh/authorized_keys
文件。
3️⃣ 建立 SSH 連線:
ssh user@remote-server
4️⃣ 驗證與連線:
- 客戶端將私鑰進行簽名,並將簽名結果傳送至伺服器。
- 伺服器使用事先儲存的公鑰驗證簽名是否正確。
- 驗證通過後建立安全的加密通道。
5️⃣防火牆設定:
- 需手動確認遠端伺服器的防火牆允許
22
端口開放,否則無法連接。
sequenceDiagram participant Client as SSH Client participant Server as SSH Server participant KeyPair as SSH Key Pair Client->>Server: 建立 TCP 連線 (Port 22) Server->>Client: 提供伺服器公鑰 (Server Public Key) Note over Client,Server: 設置安全加密通道 (Diffie-Hellman) Client->>KeyPair: 讀取私鑰 (Private Key) Client->>Server: 提供客戶端公鑰 (Client Public Key) Server->>Server: 驗證客戶端公鑰 (檢查 authorized_keys) alt 認證通過 Server->>Client: 認證成功 (Access Granted) Client->>Server: 建立加密數據傳輸通道 Server->>Client: 安全通信開始 else 認證失敗 Server->>Client: 認證失敗 (Access Denied) end
gcloud SSH 連線的原理
使用 gcloud compute ssh
指令建立 SSH 連線時,背後執行了許多自動化的操作,步驟如下:
1️⃣ 自動生成或使用現有 SSH 金鑰
- 當你第一次使用
gcloud compute ssh
指令時,gcloud 會自動檢查你的~/.ssh
目錄是否已有可用的 SSH 金鑰。 - 如果沒有,會自動生成新的 SSH 金鑰對 (
id_rsa
與id_rsa.pub
)。
2️⃣ 自動將公鑰上傳到 GCP
- gcloud 會自動將公鑰上傳到 GCP,並將金鑰寫入 VM 的
~/.ssh/authorized_keys
中。 - 這個過程通常透過
metadata
(中繼資料) 或 OS Login (作業系統登入) 機制完成,視你設定的認證模式而定。
3️⃣ 防火牆規則自動配置
- gcloud 會自動確認你的 VM 所在的網路是否允許 SSH (TCP 22 端口) 連線,並在必要時自動設置防火牆規則。
4️⃣ 建立 SSH 連線
- 最終,gcloud 實際上還是透過傳統的
ssh
指令建立連線,但自動填入所有參數,例如:
ssh -i ~/.ssh/id_rsa [USER]@[VM_EXTERNAL_IP]
- gcloud 還會自動處理特別的參數,例如代理 (Proxy) 設定、跳板機 (bastion host) 配置等。
5️⃣ 帳號驗證機制 (OS Login vs Metadata)
- Metadata 方式:
- 將 SSH 公鑰寫入 VM 的中繼資料 (metadata) 中,VM 啟動或重啟時會自動載入金鑰。
- OS Login 方式:
- 如果啟用了 OS Login 功能,則公鑰會上傳到你的 GCP 帳號,並透過 IAM 權限管理訪問控制。這樣做的好處是可以集中管理 SSH 存取權限。
sequenceDiagram participant Client as gcloud CLI (SSH Client) participant GCP as Google Cloud Platform participant VM as SSH Server participant KeyPair as SSH Key Pair Client->>GCP: gcloud compute ssh my-vm --zone=us-central1-a GCP->>Client: 🔄 自動檢查或生成 SSH 金鑰 (Public/Private Key) GCP->>VM: 🔄 自動上傳公鑰到 VM (Metadata / OS Login) Client->>VM: 建立 TCP 連線 (Port 22) VM->>Client: 提供伺服器公鑰 (Server Public Key) Note over Client,VM: 設置安全加密通道 (Diffie-Hellman) Client->>KeyPair: 讀取私鑰 (Private Key) Client->>VM: 提供客戶端公鑰 (Client Public Key) VM->>VM: 🔄 自動驗證客戶端公鑰 (檢查 authorized_keys / OS Login) alt 認證通過 VM->>Client: 認證成功 (Access Granted) Client->>VM: 建立加密數據傳輸通道 VM->>Client: 安全通信開始 else 認證失敗 VM->>Client: 認證失敗 (Access Denied) end
gcloud SSH 與一般 SSH 差異比較
功能 | 一般 SSH 指令 | gcloud SSH 指令 |
---|---|---|
金鑰生成與管理 | 手動 (ssh-keygen, ssh-copy-id) | 自動生成與上傳 (gcloud 內建) |
防火牆配置 | 需手動設定安全規則 | 自動配置或提示設定防火牆 |
使用者驗證 | 依賴 .ssh/authorized_keys | 支援 OS Login (IAM) 與 Metadata |
連線命令 | ssh user@ip_address | gcloud compute ssh instance |
高級功能 (代理、跳板機) | 需手動配置 (-J, -L 參數) | 提供簡化參數 (--tunnel-through-iap 等) |
安全性與彈性 | 需要自行管理金鑰與權限 | 透過 GCP IAM 政策集中管理 |
什麼情況下選擇 gcloud CLI SSH?
🟢 適合使用 gcloud SSH 的情境:
- 使用 GCP VM 時 (特別是在多專案、多帳號情境下)。
- 希望簡化 SSH 金鑰的管理與配置過程。
- 需要使用 Google 提供的 OS Login 和 IAM 集中權限管理。
- 需要透過 IAP (Identity-Aware Proxy) 進行更安全的連線。
🔴 適合使用一般 SSH 指令的情境:
- 連接到非 GCP 平台上的伺服器 (如 AWS、Azure、Linode)。
- 需要高度自訂的 SSH 配置 (如特殊的金鑰、特定 Proxy 設定)。
- 本地開發環境或公司內部伺服器不使用 GCP 時。
總結
使用 gcloud CLI 進行 SSH 連線不僅方便且安全,尤其在 Google Cloud Platform 環境中能大幅簡化流程。
本文介紹了從安裝、初始化到實際連線的每一步操作,並提供了常見問題的解決方案。
希望這篇指南能幫助你快速掌握 gcloud CLI 的 SSH 連接技巧,順利管理你的 GCP 虛擬機實例!