本文說明如何使用 Identity-Aware Proxy (IAP) TCP 轉送,透過內部 IP 位址連線至虛擬機器 (VM) 執行個體。
IAP TCP 轉送功能可讓您建立加密通道,將 SSH 連線轉送至 VM。連線至使用 IAP 的 VM 時,IAP 會先將 SSH 連線包裝在 HTTPS 中,再將連線轉送至 VM。接著,IAP 會檢查您是否具備必要的 IAM 權限,如果具備,就會授予 VM 存取權。
如需連線至沒有外部 IP 位址的 VM,且無法使用 IAP,請參閱「僅限內部 VM 的連線選項」中列出的其他方法。
事前準備
- 建立防火牆規則,允許來自 IAP 的連線。
-
如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。
gcloud
-
安裝 Google Cloud CLI。 安裝完成後, 請執行下列指令,初始化 Google Cloud CLI:
gcloud init如果採用外部識別資訊提供者 (IdP),必須先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
支援的作業系統
Compute Engine 提供的所有公開 Linux 映像檔都支援這些連線方法。如果是 Fedora CoreOS 映像檔,您必須先設定 SSH 存取權,才能使用這些方法。
連線至 VM
如要連線至 VM,請完成下列其中一個分頁中的步驟。
控制台
如要使用瀏覽器中的 SSH,透過 VM 的內部 IP 位址建立 SSH 連線通道,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
- 在虛擬機器執行個體清單中,按一下您要連線的執行個體那一列的 SSH。
gcloud
使用 gcloud compute ssh 指令搭配
--tunnel-through-iap 旗標,透過 VM 的內部 IP 位址建立 SSH 連線通道:
執行下列指令,連線至 VM:
gcloud compute ssh INSTANCE_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --tunnel-through-iap更改下列內容:
INSTANCE_NAME:要連線 的 VM 名稱。PROJECT_ID:VM 所在專案的 ID。ZONE:VM 所在的可用區名稱。
在 Google Cloud 控制台啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
IAP Desktop
如要使用 IAP Desktop 連線至 VM,請按照下列步驟操作:
-
如果尚未安裝 IAP Desktop,請在工作站上安裝。
-
開啟 IAP Desktop。「Add projects」(新增專案) 視窗隨即開啟。
-
看到提示訊息後,請使用有權存取專案 (內含您要連線的 VM) 的 Google 帳戶登入。
-
在「Add projects」(新增專案) 視窗中,輸入專案 ID 或專案名稱,其中包含您要連線的 VM。
-
在「Project Explorer」視窗中,再次在 VM 名稱上按一下滑鼠右鍵,然後選取「Connect」(連線),連線至 VM。
OpenSSH 用戶端
透過 IAP 通道使用 SSH,連線至沒有外部 IP 位址的 VM。您可以自行編寫 SSH 設定檔 (~/.ssh/config),讓 VS Code 或 OpenSSH 用戶端等工具直接連線。
執行
gcloud compute ssh指令,至少連線至 VM 一次,產生並傳播安全殼層金鑰:gcloud compute ssh INSTANCE_NAME \ --project=PROJECT_ID \ --zone=ZONE \ --tunnel-through-iap更改下列內容:
INSTANCE_NAME:要連線 的 VM 名稱。PROJECT_ID:VM 所在專案的 ID。ZONE:VM 所在的可用區。
連線成功後,請結束 SSH 工作階段。
在本機工作站上開啟或建立 SSH 設定檔。這個檔案通常位於 Linux 和 macOS 的
~/.ssh/config,或 Windows 的%USERPROFILE%\.ssh\config。在 SSH 設定檔中加入下列區塊,為 VM 附加設定項目:
Host INSTANCE_NAME HostName INSTANCE_NAME IdentityFile PATH_TO_PRIVATE_KEY ProxyCommand gcloud compute start-iap-tunnel %h %p --listen-on-stdin --project=PROJECT_ID --zone=ZONE --verbosity=warning User USERNAME更改下列內容:
INSTANCE_NAME:要 連線的 VM 名稱。PATH_TO_PRIVATE_KEY:私密金鑰檔案的路徑,通常是~/.ssh/google_compute_engine。PROJECT_ID:VM 所在專案的 ID。ZONE:VM 所在的可用區。USERNAME:VM 上的使用者名稱,例如 Google Cloud OS 登入使用者名稱或中繼資料使用者名稱。
在本機終端機或 SSH 用戶端執行下列指令,連線至 VM:
ssh INSTANCE_NAME
PuTTY 應用程式
如要使用 PuTTY 透過 VM 的內部 IP 位址建立 SSH 連線通道,請按照下列步驟操作:
- 如果您尚未新增安全殼層金鑰,請將安全殼層金鑰新增至 VM。
- 如果工作站尚未安裝 PuTTY 應用程式,請 下載 PuTTY 套件檔案。
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面,找到要連線的 VM 名稱。
- 開啟 PuTTY 應用程式,連線設定視窗隨即開啟。
在「主機名稱 (或 IP 位址)」欄位中,輸入與安全殼層金鑰相關聯的使用者名稱,以及要連線的 VM 名稱。請使用下列格式:
USERNAME@INSTANCE_NAME
更改下列內容:
USERNAME: 您的使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中,例如cloudysanfrancisco_example_com或cloudysanfrancisco。-
INSTANCE_NAME:VM 的名稱。
- 在「Category」(類別) 選單中,依序前往「Connection」(連線)>「SSH」>「Auth」(驗證)>「Credentials」(憑證) (如果 PuTTY 版本早於 0.78,則依序前往「Connection」(連線)>「SSH」>「Auth」(驗證))。
- 在「Private key file for authentication」欄位中,按一下「Browse」,然後選取與您新增至 VM 的公開金鑰相對應的私人安全殼層金鑰檔案 (
.ppk)。 - 在「Category」選單中,依序前往 「Connection」>「Proxy」。
- 在「Proxy type」(Proxy 類型) 部分,選取「Local」(本機)。
在「Telnet command, or local proxy command」欄位中,輸入下列指令:
gcloud.cmd compute start-iap-tunnel INSTANCE_NAME PORT_NUMBER --listen-on-stdin --project=PROJECT_ID --zone=ZONE
更改下列內容:
INSTANCE_NAME:INSTANCE_NAME:要連線的 VM 名稱。PORT_NUMBER:sshddaemon 執行的通訊埠。PORT_NUMBER預設為22。PROJECT_ID:託管您要連線的 VM 的專案。ZONE:VM 所在的可用區。
- 點選「開啟」,連線至 VM。
疑難排解
如要瞭解如何診斷及解決 SSH 連線失敗的問題,請參閱「排解 SSH 問題」。
後續步驟
- 瞭解如何管理 VM 存取權。
- 瞭解如何將檔案移轉至 VM。
- 瞭解如何使用 SSH 連線至 Compute Engine 的 Linux VM。