建立安全殼層金鑰

本文說明如何為 Compute Engine 虛擬機器 (VM) 執行個體建立安全殼層金鑰組,以便安全連線至 Compute Engine VM 執行個體。

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    選取這個頁面上範例的預計用途分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:

      gcloud init

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI。

      如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。

建立安全殼層金鑰組

如果您使用 Google Cloud 控制台或 Google Cloud CLI 連線至 VM,Compute Engine 會代您建立安全殼層金鑰。如要進一步瞭解 Compute Engine 如何設定及儲存金鑰,請參閱「關於 SSH 連線」。

如果您使用第三方工具或 OpenSSH 連線至 VM,必須先將金鑰新增至 VM,才能連線。如果沒有安全殼層金鑰,請務必先建立金鑰;VM 接受 sshd_config 檔案中列出的金鑰格式。

Linux 和 macOS

在 Linux 和 macOS 工作站上,使用 ssh-keygen 公用程式建立新的安全殼層金鑰組。以下範例會建立 RSA 金鑰組。

開啟終端機,並使用 ssh-keygen 指令搭配 -C 旗標,建立新的安全殼層金鑰組。

ssh-keygen -t rsa -f ~/.ssh/KEY_FILENAME -C USERNAME

更改下列內容:

  • KEY_FILENAME:SSH 金鑰檔案的名稱。

    舉例來說,如果檔案名稱為 my-ssh-key,系統會產生名為 my-ssh-key 的私密金鑰檔案,以及名為 my-ssh-key.pub 的公開金鑰檔案。

  • USERNAME:VM 上的使用者名稱。例如 cloudysanfrancisco 或 cloudysanfrancisco_gmail_com。

    如果是 Linux VM,除非您將 VM 設為允許根登入,否則 USERNAME 不得為 root。詳情請參閱「以根使用者身分連線至 VM」。

    如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為「DOMAIN\」。舉例來說,ad.example.com AD 中的使用者 cloudysanfrancisco 具有 USERNAME example\cloudysanfrancisco。

ssh-keygen 會將私密金鑰檔案儲存至 ~/.ssh/KEY_FILENAME,並將公開金鑰檔案儲存至 ~/.ssh/KEY_FILENAME.pub。

使用者 cloudysanfrancisco 的公開金鑰大致如下:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco

Windows 10 以上版本

在搭載 Windows 10 以上版本的工作站上,使用 ssh-keygen 公用程式建立新的安全殼層金鑰組。以下範例會建立 RSA 金鑰組。

開啟命令提示字元,然後使用 ssh-keygen 指令搭配 -C 旗標,建立新的安全殼層金鑰組。

ssh-keygen -t rsa -f C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME -C USERNAME

更改下列內容:

  • WINDOWS_USER:Windows 電腦上的使用者名稱。

  • KEY_FILENAME:安全殼層金鑰檔案的名稱。

    舉例來說,如果檔案名稱為 my-ssh-key,系統會產生名為 my-ssh-key 的私密金鑰檔案,以及名為 my-ssh-key.pub 的公開金鑰檔案。

  • USERNAME:VM 上的使用者名稱。例如 cloudysanfrancisco 或 cloudysanfrancisco_gmail_com。

    如果是 Linux VM,除非您將 VM 設定為允許根登入,否則 USERNAME 無法為 root。詳情請參閱「以根使用者身分連線至 VM」。

    如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為「DOMAIN\」。舉例來說,ad.example.com AD 中的使用者 cloudysanfrancisco 具有 USERNAME example\cloudysanfrancisco。

ssh-keygen 會將私密金鑰檔案儲存至 C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME ,並將公開金鑰檔案儲存至 C:\Users\WINDOWS_USER\.ssh\KEY_FILENAME.pub。

使用者 cloudysanfrancisco 的公開金鑰大致如下:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco

Windows 8 或更早版本

在搭載 Windows 8 以下版本的電腦上,使用 PuTTYgen 工具建立新的安全殼層金鑰組。以下範例會建立 RSA 金鑰組。

  1. 下載 puttygen.exe (如果尚未下載)。

  2. 開啟 PuTTYgen。

  3. 在「參數」下方,指定下列項目:

    • 要產生的金鑰類型:RSA
    • 產生金鑰的位元數:2048 以上
  4. 按一下「生成」,然後按照畫面上的指示操作。

    工具會顯示公開金鑰值。

  5. 在「重要留言」部分,將預先填入的文字換成你的使用者名稱。例如 cloudysanfrancisco 或 cloudysanfrancisco_gmail_com。

    如果是 Linux VM,除非您將 VM 設定為允許根登入,否則金鑰註解不能是 root。詳情請參閱「以根使用者身分連線至 VM」。

    如果 Windows VM 使用 Active Directory (AD),Key comment 必須以 AD 網域為前置字元,格式為 DOMAIN\。舉例來說,ad.example.com AD 中的使用者 cloudysanfrancisco 具有 example\cloudysanfrancisco 的金鑰註解。

  6. 選用:輸入金鑰通關密語,為金鑰加上密碼保護。

  7. 按一下「Save private key」(儲存私密金鑰),選擇要儲存私密金鑰的位置。

    PuTTYgen 會將私密金鑰寫入 .ppk 副檔名的檔案。

  8. 按一下「儲存公開金鑰」,然後選擇要儲存公開金鑰的位置。請勿關閉 PuTTYgen 視窗。

  9. 複製「Public key for pasting into OpenSSH authorized_keys file」(要貼到 OpenSSH authorized_keys 檔案中的公開金鑰) 欄位中的文字。

  10. 開啟公開金鑰檔案。公開金鑰的格式大致如下:

    ---- BEGIN SSH2 PUBLIC KEY ----
    Comment: "USERNAME"
    KEY_VALUE
    ---- END SSH2 PUBLIC KEY ----
    
  11. 將公開金鑰檔案的全部內容,替換為從「Public key for pasting into OpenSSH authorized_keys file」(公開金鑰,可貼到 OpenSSH authorized_keys 檔案) 欄位複製的值,讓公開金鑰檔案符合下列格式:

    KEY_VALUE USERNAME
    

使用者 cloudysanfrancisco 的公開金鑰大致如下:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... cloudysanfrancisco

後續步驟