使用防禦主機連線至 Linux VM


本文說明如何使用堡壘主機 VM,透過內部 IP 位址連線至虛擬機器 (VM) 執行個體。防禦主機提供外部進入點,可進入包含沒有外部 IP 位址的 VM 的虛擬私有雲 (VPC) 網路。使用防禦主機時,請先連線至防禦主機,然後再連線至目標 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」(建立執行個體) 頁面。

    前往「建立執行個體」

    1. 指定下列 VM 詳細資料:
    • 名稱:VM 的名稱。
    • 機器類型:機器類型。選擇小型機器類型,例如 e2-micro
    • 開機磁碟 作業系統:任何 Linux 作業系統。
  2. 展開「Advanced options」(進階選項) 區段,然後執行下列步驟:

    1. 在「網路介面」部分,選取與目標 VM 相同的虛擬私有雲網路和子網路。

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

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

gcloud

使用 gcloud compute instances create 指令建立防禦主機 VM:

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 執行下列指令,建立防禦主機 VM:

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

    更改下列內容:

    • VM_NAME:VM 名稱。
    • ZONE:VM 的可用區。
    • IMAGE_FAMILY:Linux 映像檔系列
    • IMAGE_PROJECT:包含圖片的圖片專案
    • SUBNET:與目標 VM 相同的虛擬私有雲子網路。如果您使用預設虛擬私有雲,則 SUBNETdefault

連線至 VM

如要連線至 VM,請按照下列分頁中的步驟進行。

gcloud

透過防禦主機使用 SSH 連線至 VM,方法是執行 gcloud compute ssh 指令

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

    gcloud compute ssh BASTION_NAME

    BASTION_NAME 替換為堡壘主機 VM 的名稱。

  2. 從防禦主機 VM,使用 --internal-ip 旗標,透過主要 VM 的內部 IP 位址連線:

    gcloud compute ssh VM_NAME \
        --internal-ip

    VM_NAME 替換為要連線的 VM 名稱。

OpenSSH 用戶端

透過 OpenSSH 用戶端,透過防禦主機連線至 VM:

  1. 如果尚未新增,請將 SSH 金鑰新增至 VM
  2. 前往 Google Cloud 控制台的「VM Instances」(VM 執行個體) 頁面,找出堡壘主機 VM 的外部 IP 位址。

    前往 VM 執行個體

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

    ssh -A -i PATH_TO_PRIVATE_KEY USERNAME@EXTERNAL_IP

    更改下列內容:

    • PATH_TO_PRIVATE_KEY:與您新增至 VM 的公開金鑰對應的私密安全殼層金鑰檔案路徑。
    • USERNAME: 您的 使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您在建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中。例如 cloudysanfrancisco_example_comcloudysanfrancisco
    • EXTERNAL_IP:VM 的外部 IP 位址。
  5. 從防禦主機 VM,透過 VM 的內部 IP 位址使用下列指令建立連線:

    ssh USERNAME@INTERNAL_IP

    更改下列內容:

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

PuTTY 應用程式

使用 PuTTY 透過防禦主機連線至 VM,方法如下:

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

    前往 VM 執行個體

  4. 開啟 PuTTY 應用程式,連線設定視窗隨即開啟。
  5. Host Name 欄位中,輸入安全殼層金鑰的相關使用者名稱,以及要連線的 VM 外部 IP 位址。請使用下列格式:

    USERNAME@EXTERNAL_IP

    更改下列內容:

    • USERNAME: 您的 使用者名稱。如果您在中繼資料中管理安全殼層金鑰, 使用者名稱就是您在建立安全殼層金鑰時指定的使用者名稱。 如果是 OS 登入帳戶,使用者名稱會定義在 Google 個人資料中。例如 cloudysanfrancisco_example_comcloudysanfrancisco
    • EXTERNAL_IP:VM 的外部 IP 位址。
  6. 在「Category」選單中,依序前往「Connection」>「SSH」>「Auth」
  7. 在「Private key file for authentication」欄位中,選取與您新增至 VM 的公開金鑰對應的私密安全殼層金鑰檔案。
  8. 在「驗證參數」部分,選取「允許代理程式轉送」
  9. 按一下「開啟」,連線至防禦主機 VM。
  10. 從防禦主機 VM,透過 VM 的內部 IP 位址使用下列指令建立連線:

    ssh USERNAME@INTERNAL_IP

    更改下列內容:

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

疑難排解

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

後續步驟