使用進階方法連線至執行個體

如果您需要管理自己的憑證,可以使用第三方工具,或使用替代連線路徑連線至執行個體。下列進階方法可能會比連線至執行個體一文所述的標準方法更符合您的需求。

您可以透過下列幾種進階方法連線至 Linux 和 Windows Server 執行個體:

事前準備

為執行個體提供公開安全殼層 (SSH) 金鑰組

一般來說,當您使用連線至執行個體一文所述的方法進行連線時,Compute Engine 會為您建立及管理安全殼層 (SSH) 金鑰組。

不過,如果您需要使用自己的安全殼層 (SSH) 金鑰組 (例如,使用第三方工具進行連線時),您必須先產生自己的安全殼層 (SSH) 金鑰組,並為執行個體提供公開安全殼層 (SSH) 金鑰組檔案,才能進行連線。

如果您不熟悉如何產生自己的安全殼層 (SSH) 金鑰組,以及如何找出公開安全殼層 (SSH) 金鑰組檔案,請參閱建立新的安全殼層 (SSH) 金鑰組指定安全殼層 (SSH) 金鑰組的位置這兩篇文章。

您可透過下列其中一種方法,為執行個體提供安全殼層 (SSH) 金鑰組:

  • (建議做法) 啟用 OS 登入功能,並使用身分與存取權管理角色,透過 Google 帳戶或代管使用者帳戶為執行個體提供公開安全殼層 (SSH) 金鑰組。方法是按照使用 OS 登入管理執行個體存取權一文中的步驟,啟用 OS 登入功能並建立角色。接著,請參閱新增安全殼層 (SSH) 金鑰組至使用者帳戶一節,將公開金鑰組新增至您要用來連線至執行個體的角色。

  • (非建議做法) 透過編輯專案或執行個體中繼資料的方式,手動新增及刪除安全殼層 (SSH) 金鑰組。請參閱管理中繼資料中的安全殼層 (SSH) 金鑰組一文。這個方法會增加非必要的風險和複雜性,因此除非上述的 OS 登入方法不適合您,否則不建議採用這個方法。詳情請參閱手動金鑰管理的風險一節。

  • 如果您的執行個體是由具有存取權的其他使用者 (例如貴機構中的系統管理員) 管理,您也可以向他們提供公開安全殼層 (SSH) 金鑰組檔案,要求他們手動替您完成設定。他們通常需要連線至您的執行個體,將您的公開金鑰組檔案複製到執行個體的主目錄中,然後變更檔案的權限,但這端視貴機構管理執行個體的方式而定。

使用第三方工具連線

為執行個體提供公開安全殼層 (SSH) 金鑰組後,您就可以使用第三方 SSH 工具和相配的私密安全殼層 (SSH) 金鑰組進行連線。

如要進行連線,請按一下本機作業系統的分頁,然後按照下列步驟操作:

Linux 和 macOS

如要使用 SSH 從 Linux 或 macOS 機器進行連線,請在本機終端機中使用內建的 ssh 指令。

  1. 如果您尚未使用其中一個可用選項為執行個體提供公開安全殼層 (SSH) 金鑰組,請執行此操作。沒有完成這個步驟,您就無法繼續進行。

  2. 在主控台中,前往執行個體頁面 (或點選下方的按鈕),找出要連線的執行個體外部 IP 位址。

    前往「Instances」(執行個體) 頁面

  3. 在本機終端機中,使用 ssh 指令,並提供私密安全殼層 (SSH) 金鑰組檔案、安全殼層 (SSH) 金鑰組的相關使用者名稱,以及要連線的執行個體外部 IP 位址。例如:

    ssh -i [PATH_TO_PRIVATE_KEY] [USERNAME]@[EXTERNAL_IP_ADDRESS]

    其中:

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Windows (PuTTY)

Windows 並未提供內建的安全殼層 (SSH) 用戶端,這表示您必須下載並安裝第三方用戶端。下列操作說明詳述如何使用 PuTTY 進行連線。

如要使用 PuTTY 從 Windows 連線至執行個體,請採取下列步驟:

  1. 如果您尚未使用其中一個可用選項為執行個體提供公開安全殼層 (SSH) 金鑰組,請執行此操作。沒有完成這個步驟,您就無法繼續進行。

  2. 在主控台中,前往執行個體頁面 (或點選下方的按鈕),找出要連線的執行個體外部 IP 位址。請記下供後續步驟使用。

    前往「Instances」(執行個體) 頁面

  3. 如果您尚未下載 putty.exe,請執行此操作。

  4. 啟動 putty.exe 以開啟 PuTTY。連線設定視窗隨即開啟。

  5. 在連線設定網頁的 [Host Name] 欄位中,輸入安全殼層 (SSH) 金鑰組的相關使用者名稱以及您要連線的執行個體外部 IP 位址,格式如下:

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    其中:

    • [USERNAME] 是連線至執行個體的使用者名稱。您必須提供建立安全殼層 (SSH) 金鑰組時指定的使用者名稱。
    • [EXTERNAL_IP_ADDRESS] 是您要連線的執行個體外部 IP 位址。

      例如,請參閱以下螢幕擷圖:

      使用 jane_doe@203.0.113.2 設定「Host Name」(主機名稱) 欄位

  6. 在左側的「Category」選單中,依序前往 [Connection] > [SSH] > [Auth]

  7. 在「Private key file for authentication」欄位中,瀏覽至私密金鑰組檔案的位置

    例如,請參閱以下螢幕擷圖:

    在私密金鑰組檔案欄位中設定 my-ssh-key.ppk 檔案的路徑

  8. 按一下 [Open] 即可開啟終端機,進而連線至您的執行個體。

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Chrome (SSH 應用程式)

Chromebook 或已安裝 Chrome 的作業系統會使用 Secure Shell 應用程式做為安全殼層 (SSH) 用戶端。如要從 Secure Shell 應用程式連線至執行個體,請執行下列步驟:

  1. 如果您尚未使用其中一個可用選項為執行個體提供公開安全殼層 (SSH) 金鑰組,請執行此操作。沒有完成這個步驟,您就無法繼續進行。

  2. 如果您尚未在 Chromebook 或 Chrome 瀏覽器上安裝 Secure Shell 應用程式,請執行此操作。

  3. 在主控台中,前往執行個體頁面 (或點選下方的按鈕),找出要連線的執行個體外部 IP 位址。請記下供後續步驟使用。

    前往「Instances」(執行個體) 頁面

  4. 在 Chrome 瀏覽器分頁中開啟 Secure Shell 應用程式。

  5. 輸入安全殼層 (SSH) 金鑰組的相關使用者名稱以及您要連線的執行個體外部 IP 位址,格式如下:

    [USERNAME]@[EXTERNAL_IP_ADDRESS]

    其中:

    • [USERNAME] 是連線至執行個體的使用者名稱。您必須提供建立安全殼層 (SSH) 金鑰組時指定的使用者名稱。
    • [EXTERNAL_IP_ADDRESS] 是您要連線的執行個體外部 IP 位址。
  6. 在「Identity」(身分) 欄位中,選取您要用來連線至執行個體的私密安全殼層 (SSH) 金鑰組檔案。如有需要,請點選 [Import] (匯入),從本機工作站中選取私密金鑰組檔案。

  7. 按一下 [Connect] (連線) 即可連線至執行個體。

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

其他 SSH 選項

除了上方詳述的選項之外,透過 SSH 連線至執行個體的其他選項包括:

連線至沒有外部 IP 位址的執行個體

如果您的獨立執行個體沒有外部 IP 位址 (例如意圖與外部網路隔離的執行個體),您仍然可以透過下列方法,利用其在 Google Cloud Platform 虛擬私人雲端 (VPC) 網路上的內部 IP 位址連線至該執行個體。

透過 VPN 連線

如要透過虛擬私人網路 (VPN) 連線至沒有外部 IP 位址的執行個體,您必須先將電腦連線至與您要連線的執行個體相同的 VPN。舉例來說,假設您有一個本機內部部署網路與 GCP 虛擬私人雲端共用的 VPN。在此情況下,您可以使用 gcloud 指令列工具、Linux 和 macOS 上的 SSH,或 Windows 上的 PuTTY 等第三方 SSH 用戶端連線至執行個體。

如需詳細資訊,請參閱以下分頁:

gcloud

您可以使用帶有 --internal-ip 標記的 gcloud compute ssh 指令,連線至沒有外部 IP 位址的執行個體。

gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip

其中 [INTERNAL_INSTANCE_NAME] 是您要連線的執行個體名稱。

連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Linux 和 macOS

如要從 Linux 或 macOS 工作站連線至沒有外部 IP 位址的執行個體,請採取下列步驟:

  1. 使用其中一個可用選項為執行個體提供公開安全殼層 (SSH) 金鑰組。沒有完成這個步驟,您就無法繼續進行。

  2. 在本機電腦啟動 ssh-agent,為您管理安全殼層 (SSH) 金鑰組:

    $ eval ssh-agent $SHELL
    
  3. 使用 ssh-add 指令,將您的私密安全殼層 (SSH) 金鑰組從本機電腦載入代理程式,並且讓所有 SSH 指令使用這組金鑰進行驗證。

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    其中的 [PRIVATE_KEY] 是私密金鑰組檔案的名稱。

  4. 在主控台中,前往執行個體頁面 (或點選下方的按鈕),找出要連線的執行個體內部 IP 位址。

    [前往「Instances」(執行個體) 頁面](https://console.cloud.google.com/compute/instances){: class="button button-primary" target="console" track-type="tasks" track-name="consoleLink" track-metadata-position="body" track-metadata-end-goal="attachDisk"}

    1. 在本機終端機中,使用 ssh 指令,並提供私密安全殼層 (SSH) 金鑰組的相關使用者名稱,以及要連線的執行個體的內部 IP 位址。例如:
    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    其中:

    • [USERNAME] 是連線至執行個體的使用者名稱。您必須提供建立安全殼層 (SSH) 金鑰組時指定的使用者名稱。
    • [INTERNAL_INSTANCE_IP_ADDRESS] 是您要連線的執行個體的內部 IP 位址。

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Windows (PuTTY)

如要從 Windows 工作站連線至沒有外部 IP 位址的執行個體,請採取下列步驟:

  1. 如果您尚未使用其中一個可用選項為執行個體提供公開安全殼層 (SSH) 金鑰組,請執行此操作。沒有完成這個步驟,您就無法繼續進行。

  2. 在主控台中,前往執行個體頁面 (或點選下方的按鈕),找出要連線的執行個體內部 IP 位址。

    前往「Instances」(執行個體) 頁面

  3. 透過 Windows 使用 PuTTY 連線至執行個體,但不要指定外部 IP 位址,而是指定要連線的執行個體的內部位址。

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

透過防禦主機連線

要連線至沒有外部 IP 位址的執行個體,另一種方法是透過防禦主機進行連線。此外,您也能使用防禦主機連線至其他對等虛擬私人雲端網路上的執行個體。

如要透過防禦主機從 Linux 和 macOS 連線至執行個體,請使用 gcloud 指令列工具或 SSH;如要從 Windows 連線,則使用第三方 SSH 用戶端 (例如 PuTTY)。

與其他方法一樣,透過防禦主機連線至其他執行個體需要使用私密安全殼層 (SSH) 金鑰組。您可以透過以下幾種方式進行管理:

  • 安裝 gcloud 指令列工具並進行設定,讓它為您管理私密金鑰組。
  • 在 SSH 用戶端中啟用代理轉送功能,藉此將您的私密金鑰組轉送至防禦主機執行個體。

gcloud

您可以利用 gcloud 指令列工具連線至沒有外部 IP 位址的執行個體,而不需將私密安全殼層 (SSH) 金鑰組轉送至防禦主機。如要執行此操作,您必須在本機工作站與防禦主機執行個體上安裝 gcloud (如果您尚未安裝的話)。

如何使用 gcloud 指令列工具連線至沒有外部 IP 位址的執行個體:

  1. 為防禦主機執行個體上的服務帳戶設定 Compute Engine API 的讀取/寫入存取權範圍,方法是在指令中加入 --scopes compute-rw。詳情請參閱變更執行個體的服務帳戶與存取權範圍一文。

  2. 透過 OS 登入 (建議做法) 或專案中繼資料授予必要的身分與存取權管理權限,以允許防禦主機存取您的公開安全殼層 (SSH) 金鑰組。

    防禦主機上的服務帳戶現在應能夠套用您的公開安全殼層 (SSH) 金鑰組。

  3. 連線至 Linux 防禦主機執行個體:

    gcloud compute ssh [EXTERNAL_INSTANCE_NAME]
    

    其中 [EXTERNAL_INSTANCE_NAME] 是您用來取得內部網路存取權的防禦主機執行個體名稱。

  4. 在 Linux 防禦主機執行個體中,使用帶有 --internal-ip 標記的 gcloud compute ssh 指令,透過執行個體的內部 IP 位址連線至執行個體。

    gcloud compute ssh [INTERNAL_INSTANCE_NAME] --internal-ip
    

    其中 [INTERNAL_INSTANCE_NAME] 是您要連線的執行個體名稱。

連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Linux 和 macOS

如果您需要將私密金鑰組轉送至防禦主機執行個體,就必須將金鑰組新增至 ssh-agent。然後,使用 gcloud compute ssh 指令或 ssh 指令建立與防禦主機的初始連線,並轉送安全殼層 (SSH) 代理程式中的金鑰。這個程序僅適用於 Linux 與 macOS 工作站。如果您需要將私密金鑰從「Windows 工作站」轉送至防禦主機,請改為按照 PuTTY 指示操作。

如要從 Linux 或 macOS 工作站連線至沒有外部 IP 位址的執行個體,請採取下列步驟:

  1. 使用其中一個可用選項提供公開安全殼層 (SSH) 金鑰組。請確認您已將這個公開安全殼層 (SSH) 金鑰組提供給 Linux 防禦主機執行個體和沒有外部 IP 位址的執行個體。

  2. 在本機電腦啟動 ssh-agent,為您管理安全殼層 (SSH) 金鑰組:

    $ eval ssh-agent $SHELL
    
  3. 使用 ssh-add 指令,將您的私密安全殼層 (SSH) 金鑰組從本機電腦載入代理程式,並且讓所有 SSH 指令使用這組金鑰進行驗證。

    $ ssh-add ~/.ssh/[PRIVATE_KEY]
    

    其中的 [PRIVATE_KEY] 是私密金鑰組檔案的名稱。

  4. 找出 Linux 防禦主機執行個體的外部 IP 位址,並找出您要連線的內部執行個體的內部 IP 位址。您可在「Instances」(執行個體) 頁面的「External IP」(外部 IP) 與「Internal IP」(內部 IP) 資料欄中找到這些位址。

    前往「Instances」(執行個體) 頁面

  5. 使用 sshgcloud compute ssh 連線至 Linux 防禦主機執行個體。針對任一選項,加入 -A 引數即可啟用驗證代理程式轉送功能。

    使用 ssh 連線至 Linux 防禦主機執行個體,並轉送私密金鑰。

    $ ssh -A [USERNAME]@[BASTION_HOST_EXTERNAL_IP_ADDRESS]

    其中:

    • [USERNAME] 是附加至安全殼層 (SSH) 金鑰組的名稱。
    • [BASTION_HOST_EXTERNAL_IP_ADDRESS] 是您用來取得內部網路存取權的防禦主機執行個體外部 IP 位址。

    或者,您也可以使用 gcloud compute ssh 指令連線至防禦主機執行個體,並轉送私密金鑰組。這個選項可讓您使用 gcloud 指令列工具連線至防禦主機執行個體,然後再於連線至內部 IP 位址時搭配使用一般 ssh 和轉送憑證。

    gcloud compute ssh --ssh-flag="-A" [BASTION_HOST_INSTANCE_NAME]
    

    其中 [BASTION_HOST_INSTANCE_NAME] 是您用來取得內部網路存取權的防禦主機執行個體名稱。

  6. 從 Linux 防禦主機執行個體,使用 SSH 連線至沒有外部 IP 位址的執行個體。

    $ ssh [USERNAME]@[INTERNAL_INSTANCE_IP_ADDRESS]

    其中:

    • [USERNAME] 是附加至安全殼層 (SSH) 金鑰組的名稱。
    • [INTERNAL_INSTANCE_IP_ADDRESS] 是您要連線的執行個體的內部 IP 位址。

連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

Windows (PuTTY)

如要從 Windows 工作站連線至沒有外部 IP 位址的執行個體,請採取下列步驟:

  1. 使用其中一個可用選項提供公開安全殼層 (SSH) 金鑰組。請確認您已將這個公開安全殼層 (SSH) 金鑰組提供給 Linux 防禦主機執行個體和沒有外部 IP 位址的執行個體。

  2. 找出 Linux 防禦主機執行個體的外部 IP 位址,並找出您要連線的內部執行個體的內部 IP 位址。您可在「Instances」(執行個體) 頁面的「External IP」(外部 IP) 與「Internal IP」(內部 IP) 資料欄中找到這些位址。

    前往「Instances」(執行個體) 頁面

  3. 使用 PuTTY 連線至 Linux 防禦主機執行個體。如以下螢幕擷圖所示,啟用 [Allow agent forwarding] (允許代理程式轉送) 設定以將私密安全殼層 (SSH) 金鑰組傳送至防禦主機:

    允許您要連線的執行個體執行代理程式轉送。

  4. 從 Linux 防禦主機執行個體,使用 SSH 連線至沒有外部 IP 位址的執行個體:

    $ ssh [USERNAME]@[INTERNAL_IP_ADDRESS]
    

    其中:

    • [USERNAME] 是連線至執行個體的使用者名稱。您必須提供建立安全殼層 (SSH) 金鑰組時指定的使用者名稱。
    • [INTERNAL_IP_ADDRESS] 是您要連線的執行個體的內部 IP 位址。

    連線之後,請使用這個終端機在執行個體上執行指令。執行個體使用完畢後,請使用 exit 指令中斷與執行個體的連線。

透過 Cloud IAP 連線

將 SSH 與 Cloud IAP 的 TCP 轉送功能搭配使用可將 SSH 連線包裝在 HTTPS 內。這樣一來,Cloud IAP 的 TCP 轉送功能就能將其傳送至遠端執行個體。

如要瞭解如何使用 Cloud IAP 連線至遠端執行個體,請參閱使用 Cloud IAP 進行 TCP 轉送一文。

root 使用者身分連線至執行個體

公開映像檔和多數常見的作業系統皆預設禁止使用 SSH 執行 root 登入作業。您必須先將執行個體設定為允許以 root 身分使用 SSH 進行連線,執行個體才能以這種方式運作。

根據最佳做法,/etc/ssh/sshd_config SSH 設定檔的 PermitRootLogin 參數通常都設為 no。由於這項參數設定,即使您在專案或執行個體中繼資料中指定了 root 的安全殼層 (SSH) 金鑰組,也無法以超級使用者身分連線至執行個體。如果使用者要求 root 權限,只要透過 sudo 執行指令,即可取得權限。

如果您將執行個體設定為允許以超級使用者身分執行 SSH,並為該執行個體上的超級使用者設定安全殼層 (SSH) 金鑰組,就能以 root 身分進行連線,方法是使用 gcloud compute ssh 指令,並在執行個體名稱之前指定 root@

gcloud compute ssh --project [PROJECT_ID] --zone [ZONE] root@[INSTANCE_NAME]

其中:

  • [PROJECT_ID] 是包含執行個體的專案 ID。
  • [ZONE] 是執行個體所在的區域名稱。
  • [INSTANCE_NAME] 是執行個體的名稱。

使用 PowerShell 連線至 Windows 執行個體

如果您的 Windows 工作站內含 PowerShell,就可以透過遠端 PowerShell 工作階段連線至 Windows Server 執行個體。這一程序與使用 SSH 連線至 Linux 執行個體類似。

  1. 如果您尚未在該遠端 Windows 執行個體上建立使用者名稱與密碼,請建立或重設您的 Windows 密碼

  2. 新增防火牆規則,該規則必須能在 Windows Server 執行個體所在的 GCP 虛擬私人雲端網路上開啟通訊埠 5986

  3. 在本機工作站上,開啟 PowerShell 終端機。

  4. 或者,您可以初始化一個變數來保存您的使用者憑證,這樣您就不需要每次連線至執行個體時都輸入使用者憑證。如果略過這個步驟,您會在稍後收到提醒您輸入使用者名稱與密碼的提示訊息。

    PS C:\> $credentials = Get-Credential
    
  5. 使用 Enter-PSSession 指令啟動遠端 PowerShell 工作階段,並加入標記以使用安全資料傳輸層 (SSL) 及略過憑證檢查。

    PS C:\> Enter-PSSession -ComputerName [IP_ADDRESS] -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials
    

    其中 [IP_ADDRESS] 是您要連線的執行個體的外部 IP 位址、DNS 名稱或 Windows 電腦名稱。

    前往「Instances」(執行個體) 頁面

順利連線後,命令提示字元會變更為包含遠端 Windows 執行個體的 IP 位址。現在,您可以使用終端機在遠端 Windows Server 執行個體上執行 PowerShell 指令。

您也可以執行帶有 -ScriptBlock 標記的 Invoke-Command,做為 Enter-PSSession 指令的替代方式,以便在遠端執行個體上執行 PowerShell 指令,而不需建立互動工作階段。

PS C:\> Invoke-Command -ComputerName [IP_ADDRESS] -ScriptBlock { [SCRIPT] } -UseSSL -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck) -Credential $credentials

其中:

  • [IP_ADDRESS] 是您要連線的執行個體的 IP 位址、DNS 名稱或 Windows 電腦名稱。
  • [SCRIPT] 是要在遠端執行個體上執行的一或多個指令。例如,指定 Get-EventLog -log "Windows PowerShell" 可取得記錄事件的清單。

以服務帳戶身分進行執行個體之間的手動連線

在某些情況下,您可能需要連線至多個執行個體並執行指令,就像您是與該執行個體相關聯的服務帳戶。您可以利用 gcloud compute ssh 指令,使用服務帳戶的 SSH 憑證從一個執行個體連線到其他執行個體,這樣您就能在第二個執行個體上以服務帳戶的身分執行指令。

gcloud 指令列工具會自動產生安全殼層 (SSH) 金鑰組,並為它與執行個體上的服務帳戶建立關聯。以服務帳戶身分連線至另一個執行個體後,您可以使用該服務帳戶的身分與存取權管理權限執行其他 gcloud 指令。

以下範例假設您具有如下環境:

  • 執行個體 A:
    • 執行個體 A 擁有已建立關聯的服務帳戶。
    • 與執行個體 A 相關聯的服務帳戶具備必要的 OS 登入角色,該角色是在專案層級所設定,或是專為執行個體 B 資源而設定。
    • 該服務帳戶涵蓋執行個體 A 上 https://www.googleapis.com/auth/cloud-platform 整個平台的範圍。
  • 執行個體 B:
    • 執行個體 B 可在與執行個體 A 相同的內部網路上執行,也可在設有允許來自執行個體 A 的 SSH 連線的防火牆規則的網路上執行。
    • 您的專案或執行個體 B 已啟用 OS 登入功能
  • 您的個人使用者帳戶:
    • 您的帳戶具備與執行個體 A 相關聯服務帳戶的 roles/iam.serviceAccountUser 角色。
    • 您的帳戶具備執行個體 A 專用的 SSH 存取權。
    • 您的帳戶無權存取執行個體 B。服務帳戶是唯一具備連線至執行個體 B 所需 OS 登入角色的帳戶。

連線至執行個體 A 並以該服務帳戶身分執行指令。這個步驟規定您必須具備該服務帳戶的 roles/iam.serviceAccountUser 角色:

  1. 以具備 roles/iam.serviceAccountUser 角色的使用者身分連線至執行個體 A。舉例來說,您可以使用 gcloud 指令列工具來建立這第一個 SSH 連線:

    my-username@localworkstation:~$ gcloud compute ssh instance-a --project my-project --zone us-east1-d
    
  2. 透過 SSH 連線至執行個體 A 之後,只要您具備 roles/iam.serviceAccountUser 角色,即可以服務帳戶身分執行指令。在本例中,在執行個體 A 上執行 gcloud 指令列工具以建立至執行個體 B 的連鎖 SSH 連線。gcloud 指令列工具會識別執行個體 B 已啟用 OS 登入功能,以及該服務帳戶具備與執行個體 B 建立 SSH 連線所需的身分與存取權管理角色。

    my-username@instance-a:~$ gcloud compute ssh instance-b --project my-project --zone us-east1-d
    
    WARNING: Using OS Login user [sa_113491385848438711199] instead of default user [my-username]
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64
    ⋮
    
    
  3. 您現在已經以服務帳戶身分連線至執行個體 B,並且能以該服務帳戶身分執行指令。

    sa_113491385848438711199@instance-b:~$ uname -a
    
    Linux instance-b 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u6 (2018-10-08) x86_64 GNU/Linux
    
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件