使用防禦主機連線至 Linux VM

本文說明如何使用堡壘主機 VM,透過內部 IP 位址連線至虛擬機器 (VM) 執行個體。堡壘主機提供外部進入點,可進入虛擬私有雲 (VPC) 網路,其中包含沒有外部 IP 位址的 VM。使用堡壘主機時,請先連線至堡壘主機,再連線至目標 VM。

如果 VM 沒有外部 IP 位址,使用內部 IP 位址連線到 VM 會很有幫助。如果 VM 確實有外部 IP 位址,請使用外部 IP 位址連線至 VM。如需連線至沒有外部 IP 位址的 VM,且無法使用堡壘主機,請參閱「選擇僅限內部 VM 的連線選項」中列出的其他方法。

支援的作業系統

Compute Engine 支援所有公開 Linux 映像檔的連線方法。如果是 Fedora CoreOS 映像檔,您必須先設定 SSH 存取權,才能使用這些方法。

建立堡壘主機 VM

在目標虛擬私有雲網路中建立 Compute Engine VM,做為堡壘主機。

控制台

如要建立堡壘主機 VM,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「Create an instance」(建立執行個體)

  2. 指定下列 VM 詳細資料:

    • Name:VM 的名稱。

    • 機型:機型。選擇小型機型,例如 e2-micro。

    • 「開機磁碟」>「作業系統」:任何 Linux OS。

  3. 展開「Advanced options」(進階選項) 區段,然後執行下列操作:

    1. 在「Network interfaces」(網路介面) 區段中,選取與目標 VM 相同的虛擬私有雲網路和子網路。

    2. 在「外部 IPv4 位址」部分,選取「暫時」。

  4. 如要建立並啟動 VM,請按一下 [Create] (建立)。

gcloud

使用 gcloud compute instances create 指令建立堡壘主機 VM:

  1. 在 Google Cloud 控制台啟用 Cloud Shell。

    啟用 Cloud Shell

    Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 執行下列指令,建立堡壘主機 VM:

    gcloud compute instances create BASTION_NAME \
      --zone=ZONE \
      --machine-type=e2-micro \
      --image-family=IMAGE_FAMILY \
      --image-project=IMAGE_PROJECT \
      --network-interface=subnet=SUBNET
    

    更改下列內容:

    • BASTION_NAME:堡壘主機 VM 的名稱。
    • ZONE:堡壘主機 VM 的可用區。
    • IMAGE_FAMILY:Linux 映像檔系列。
    • IMAGE_PROJECT:包含映文件的映文件專案。
    • SUBNET:與目標 VM 相同的虛擬私有雲子網路。如果使用預設虛擬私有雲網路,請將 SUBNET 設為 default。

連線至 VM

如要連線至 VM,請完成下列其中一個分頁中的步驟。

gcloud

使用 SSH 並執行 gcloud compute ssh 指令,透過堡壘主機連線至 VM:

  1. 執行下列指令,連線至堡壘主機 VM:

    gcloud compute ssh BASTION_NAME \
        --project=PROJECT_ID \
        --zone=ZONE

    更改下列內容:

    • BASTION_NAME:堡壘主機 VM 的名稱。
    • PROJECT_ID:堡壘主機 VM 所在專案的 ID。
    • ZONE:堡壘主機 VM 所在的可用區名稱。
  2. 在堡壘主機 VM 中,使用 --internal-ip 旗標,透過目標 VM 的內部 IP 位址連線至目標 VM:

    gcloud compute ssh INSTANCE_NAME \
        --zone=TARGET_ZONE \
        --internal-ip

    更改下列內容:

    • INSTANCE_NAME:要 連線的 VM 名稱。
    • TARGET_ZONE:目標 VM 所在的可用區名稱。

OpenSSH 用戶端

如要透過 OpenSSH 用戶端的堡壘主機連線至 VM,請按照下列步驟操作:

  1. 如果您尚未新增安全殼層金鑰,請將安全殼層金鑰新增至堡壘主機 VM 和目標 VM。
  2. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面,找出堡壘主機 VM 的外部 IP 位址,以及要連線的 VM 內部 IP 位址。

    前往 VM 執行個體

  3. 在工作站上開啟終端機。
  4. 執行下列指令,連線至堡壘主機 VM:

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    更改下列內容:

    • PATH_TO_PRIVATE_KEY:私密安全殼層金鑰檔案的路徑,該檔案對應至您新增至 VM 的公開金鑰,例如 ~/.ssh/my-ssh-key,或 ~/.ssh/google_compute_engine (如果金鑰是由 Google Cloud CLI 產生)。
    • USERNAME: 您的使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中,例如 cloudysanfrancisco_example_com 或 cloudysanfrancisco。
    • EXTERNAL_IP:堡壘主機 VM 的外部 IP 位址。
  5. 在堡壘主機 VM 中,使用下列指令,透過 VM 的內部 IP 位址連線:

    ssh USERNAME@INTERNAL_IP

    更改下列內容:

    • USERNAME: 您的使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中,例如 cloudysanfrancisco_example_com 或 cloudysanfrancisco。
    • INTERNAL_IP:VM 的內部 IP 位址。

PuTTY 應用程式

如要使用 PuTTY 透過堡壘主機連線至 VM,請按照下列步驟操作:

  1. 如果您尚未新增安全殼層金鑰,請將安全殼層金鑰新增至堡壘主機 VM 和目標 VM。
  2. 如果工作站尚未安裝 PuTTY 應用程式,請 下載 PuTTY 套件檔案。
  3. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面,找出堡壘主機 VM 的外部 IP 位址,以及要連線的 VM 內部 IP 位址。

    前往 VM 執行個體

  4. 開啟 PuTTY 應用程式,連線設定視窗隨即開啟。
  5. 在「主機名稱 (或 IP 位址)」欄位中,輸入與安全殼層金鑰相關聯的使用者名稱,以及堡壘主機 VM 的外部 IP 位址。請使用下列格式:

    USERNAME@EXTERNAL_IP

    更改下列內容:

    • USERNAME: 您的使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中,例如 cloudysanfrancisco_example_com 或 cloudysanfrancisco。
    • EXTERNAL_IP:堡壘主機 VM 的外部 IP 位址。
  6. 在「Category」(類別) 選單中,依序前往「Connection」(連線)>「SSH」>「Auth」(驗證)>「Credentials」(憑證) (如果 PuTTY 版本早於 0.78,則依序前往「Connection」(連線)>「SSH」>「Auth」(驗證))。
  7. 在「Private key file for authentication」欄位中,按一下「Browse」,然後選取與您新增至 VM 的公開金鑰相對應的私人安全殼層金鑰檔案 (.ppk)。
  8. 在「Category」(類別) 選單中,依序前往「Connection」(連線)>「SSH」>「Auth」(驗證),然後在 「Authentication parameters」(驗證參數) 區段中選取 「Allow agent forwarding」(允許代理程式轉送)。
  9. 按一下「開啟」,連線至堡壘主機 VM。
  10. 在堡壘主機 VM 中,使用下列指令,透過 VM 的內部 IP 位址連線:

    ssh USERNAME@INTERNAL_IP

    更改下列內容:

    • USERNAME: 您的使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中,例如 cloudysanfrancisco_example_com 或 cloudysanfrancisco。
    • INTERNAL_IP:VM 的內部 IP 位址。

疑難排解

如要瞭解如何診斷及解決 SSH 連線失敗的問題,請參閱「排解 SSH 問題」。

後續步驟