支援 OS 登入憑證的 VM 支援透過 SSH 金鑰和 SSH 憑證建立連線。安全殼層憑證是由另一個受信任的金鑰簽署的安全殼層金鑰,在本例中,這個金鑰是由 OS 登入管理的憑證授權單位。本文說明如何設定 OS 登入 VM,要求 SSH 連線使用 SSH 憑證,並封鎖來自未簽署安全殼層金鑰的連線。
設定 OS 登入功能時,如果要求連線至 VM 必須使用 SSH 憑證,只有憑證授權單位簽署的 SSH 憑證才能連線至 VM,未簽署的 SSH 金鑰則會遭到拒絕。SSH 憑證的效期為五分鐘,過後就無法再用於連線至 VM,必須產生新的憑證。
建議您設定 OS 登入,要求 SSH 連線使用 SSH 憑證,進一步防範惡意使用者。安全殼層憑證的效期很短,而且只適用於特定 VM,因此即使遭駭,攻擊面和攻擊時間窗也遠小於長期有效的安全殼層金鑰。
如果貴機構使用員工身分聯盟,請參閱「搭配使用員工身分聯盟與 OS 登入」,瞭解如何為貴機構啟用 SSH 憑證。
事前準備
- 設定 OS 登入並指派 OS 登入 IAM 角色。
-
如果尚未設定驗證,請先完成設定。
驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
限制
- 您連線的 VM 必須搭載 OpenSSH 7.4 以上版本,才能使用 SSH 憑證。
要求 SSH 憑證
您可以設定 OS 登入功能,要求所有連線至專案中 OS 登入 VM 的 SSH 連線,或連線至單一 VM 時,都必須使用 SSH 憑證。設定 OS 登入功能,要求使用 SSH 憑證後,透過 Google Cloud 控制台和 gcloud CLI 建立的 SSH 連線,預設會使用 SSH 憑證。如果不想設定 OS 登入功能來要求憑證,但想使用憑證連線至 VM,則必須使用第三方工具連線,詳情請參閱「使用 SSH 憑證連線至 VM」一節。
警告:如果需要 SSH 憑證,VM 會拒絕來自 SSH 金鑰的連線,而您先前已設定這些金鑰搭配 OS 登入使用。要求專案中所有啟用 OS 登入功能的 VM 使用 SSH 憑證
如要要求專案中所有使用 OS 登入的 VM 連線都必須具備 SSH 憑證,請使用 Google Cloud 控制台或 gcloud CLI。
控制台
如要規定所有連線都必須使用 SSH 憑證,才能連線至已啟用 OS Login 的 VM,請使用 Google Cloud 控制台,將專案中繼資料中的 enable-oslogin 和 enable-oslogin-certificates 設為 TRUE:
前往「中繼資料」頁面。
按一下 [編輯]。
按一下 [新增項目]。
- 在「Key」(金鑰) 欄位中輸入
enable-oslogin。 - 在「值」欄位中輸入
TRUE。
- 在「Key」(金鑰) 欄位中輸入
按一下 [新增項目]。
- 在「Key」欄位中輸入
enable-oslogin-certificates。 - 在「值」欄位中輸入
TRUE。
- 在「Key」欄位中輸入
按一下 [儲存]。
gcloud
如要規定所有連線都必須使用安全殼層憑證,才能連線至已啟用 OS 登入功能的 VM,請使用 gcloud compute project-info add-metadata 指令,在專案中繼資料中設定 enable-oslogin=TRUE 和 enable-oslogin-certificates=TRUE:
gcloud compute project-info add-metadata \
--metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE
在啟用 OS 登入功能的單一 VM 上要求 SSH 憑證
如要對使用 OS Login 的單一 VM 執行所有 SSH 連線時都要求憑證,請使用 Google Cloud 控制台或 gcloud CLI。
控制台
如要規定所有連線都必須使用 SSH 憑證才能連線至單一 VM,請使用Google Cloud 控制台,在執行個體中繼資料中將 enable-oslogin 和 enable-oslogin-certificates 設為 TRUE:
前往「VM instances」(VM 執行個體) 頁面。
按一下要啟用 SSH 憑證的 VM 名稱。
按一下 [編輯]。
在「中繼資料」部分,按一下「新增項目」。
- 在「Key」(金鑰) 欄位中輸入
enable-oslogin。 - 在「值」欄位中輸入
TRUE。
- 在「Key」(金鑰) 欄位中輸入
按一下 [新增項目]。
- 在「Key」欄位中輸入
enable-oslogin-certificates。 - 在「值」欄位中輸入
TRUE。
- 在「Key」欄位中輸入
按一下 [儲存]。
gcloud
如要針對單一 VM 的所有連線要求使用 SSH 憑證,請使用 gcloud compute instances add-metadata 指令在執行個體中繼資料中設定 enable-oslogin=TRUE 和 enable-oslogin-certificates=TRUE:
gcloud compute instances add-metadata VM_NAME \
--metadata enable-oslogin=TRUE,enable-oslogin-certificates=TRUE
將 VM_NAME 替換為您的 VM 名稱。
使用 SSH 憑證連線至 VM
設定 OS 登入功能,要求使用 SSH 憑證後,從 Google Cloud 控制台和 gcloud CLI 建立的 SSH 連線,預設會使用 SSH 憑證。如果不想設定 OS 登入來要求憑證,但想使用憑證連線至 VM,就必須使用第三方工具連線。
控制台
從Google Cloud 控制台使用 瀏覽器中的 SSH 連線至 VM,方法如下:
- 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
-
在虛擬機器執行個體清單中,按一下您要連線的執行個體那一列的「SSH」SSH。

gcloud
使用 gcloud beta compute ssh 指令,透過憑證連線至 VM:
gcloud beta compute ssh VM_NAME
將 VM_NAME 替換為要連線的 VM 名稱。
第三方工具
如要搭配第三方 SSH 用戶端使用 SSH 憑證,請按照下列步驟操作:
如果沒有安全殼層金鑰,請建立一個。
使用
projects.locations.signSshPublicKey方法簽署公開安全殼層金鑰:POST https://oslogin.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey { "ssh_public_key": "PUBLIC_KEY" "compute_instance": "COMPUTE_INSTANCE", "service_account": "SERVICE_ACCOUNT" }更改下列內容:
PROJECT_ID:專案 ID,用於存放您要連線的 VMLOCATION:要連線的 VM 所在區域PUBLIC_KEY:安全殼層公開金鑰檔案的內容COMPUTE_INSTANCE:要連線的 Compute Engine 執行個體,格式為projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_ID。SERVICE_ACCOUNT:附加至執行個體的服務帳戶。如果執行個體未附加服務帳戶,請刪除這個欄位。
從
projects.locations.signSshPublicKey方法的輸出內容複製 SSH 憑證,並將內容儲存至新檔案。執行下列指令,設定 SSH 憑證檔案的權限:
sudo chmod 600 FILE_NAME
將
FILE_NAME替換為檔案名稱。使用下列指令連線至 VM:
ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
更改下列內容:
PATH_TO_PRIVATE_KEY:私密 SSH 金鑰檔案的路徑。PATH_TO_SSH_CERTIFICATE:SSH 憑證檔案的路徑。USERNAME:您的 OS 登入使用者名稱EXTERNAL_IP:VM 的外部 IP 位址。
疑難排解
如果您無法連線至已設定為需要 SSH 憑證的 VM,可能原因如下:
- 您的 VM 使用不支援的 OpenSSH 版本。如要解決這個問題,請在執行個體中繼資料中,將
enable-oslogin-certificates設為FALSE,藉此停用 VM 中繼資料中的憑證。
後續步驟
- 進一步瞭解 OS 登入。
- 瞭解如何設定兩步驟驗證的 OS 登入服務。
- 瞭解如何管理組織中的 OS 登入功能。