支援 OS 登入憑證的 VM 支援透過 SSH 金鑰和 SSH 憑證連線。安全殼層憑證是由另一個受信任的金鑰簽署的安全殼層金鑰,在本例中是由 OS 登入管理的憑證授權單位簽署。本文說明如何設定 OS 登入 VM,要求透過 SSH 連線時提供 SSH 憑證,並封鎖來自未簽署 SSH 金鑰的連線。
設定 OS 登入功能時,如果要求透過 SSH 憑證連線至 VM,只有憑證授權單位簽署的 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。
-
- 設定預設地區和區域。
限制
- 如要使用 SSH 憑證,連線的 VM 必須安裝 OpenSSH 7.4 以上版本。
需要 SSH 憑證
您可以設定 OS 登入功能,要求所有連線至專案中 OS 登入 VM 或單一 VM 的 SSH 連線,都必須使用 SSH 憑證。設定 OS 登入功能,要求使用 SSH 憑證後,從 Google Cloud 控制台和 gcloud CLI 建立的 SSH 連線,預設會使用 SSH 憑證。如果您不想設定 OS 登入功能來要求憑證,但想使用憑證連線至 VM,就必須使用第三方工具連線,如「使用 SSH 憑證連線至 VM」一節所述。
要求專案中所有啟用 OS 登入服務的 VM 都必須使用 SSH 憑證
如要為專案中所有使用 OS 登入的 VM,要求所有連線都必須使用 SSH 憑證,請使用 Google Cloud 控制台或 gcloud CLI。
控制台
如要規定所有連線都必須使用 SSH 憑證,才能連線至已啟用 OS 登入功能的 VM,請使用 Google Cloud 控制台,將專案中繼資料中的 enable-oslogin 和 enable-oslogin-certificates 設為 TRUE:
前往「中繼資料」頁面。
按一下 [編輯]。
按一下 [新增項目]。
- 在「Key」(金鑰) 欄位中,輸入
enable-oslogin。 - 在「Value」(值) 欄位中,輸入
TRUE。
- 在「Key」(金鑰) 欄位中,輸入
按一下 [新增項目]。
- 在「Key」(金鑰) 欄位中,輸入
enable-oslogin-certificates。 - 在「Value」(值) 欄位中,輸入
TRUE。
- 在「Key」(金鑰) 欄位中,輸入
按一下 [儲存]。
gcloud
如要規定所有連線都必須使用 SSH 憑證,才能連線至已啟用 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。
控制台
如要針對單一 VM 的所有連線要求使用 SSH 憑證,請使用Google Cloud 控制台將執行個體中繼資料的 enable-oslogin 和 enable-oslogin-certificates 設為 TRUE:
前往「VM instances」(VM 執行個體) 頁面。
按一下要使用 SSH 憑證的 VM 名稱。
按一下 [編輯]。
在「中繼資料」部分中,按一下「新增項目」。
- 在「Key」(金鑰) 欄位中,輸入
enable-oslogin。 - 在「Value」(值) 欄位中,輸入
TRUE。
- 在「Key」(金鑰) 欄位中,輸入
按一下 [新增項目]。
- 在「Key」(金鑰) 欄位中,輸入
enable-oslogin-certificates。 - 在「Value」(值) 欄位中,輸入
TRUE。
- 在「Key」(金鑰) 欄位中,輸入
按一下 [儲存]。
gcloud
如要規定所有連線都必須使用 SSH 憑證連線至單一 VM,請使用 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 名稱替換為 VM_NAME。
使用 SSH 憑證連線至 VM
設定 OS 登入功能,要求使用 SSH 憑證後,從 Google Cloud 控制台和 gcloud CLI 建立的 SSH 連線,預設會使用 SSH 憑證。如果不想設定 OS Login 必須使用憑證,但想使用憑證連線至 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:包含要連線 VM 的專案 IDLOCATION:要連線的 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:私密安全殼層金鑰檔案的路徑。PATH_TO_SSH_CERTIFICATE:SSH 憑證檔案的路徑。USERNAME:您的 OS 登入使用者名稱EXTERNAL_IP:VM 的外部 IP 位址。
疑難排解
如果您無法連線至已設定為需要 SSH 憑證的 VM,可能的原因如下:
- 您的 VM 使用不支援的 OpenSSH 版本。如要解決這個問題,請在執行個體中繼資料中將
enable-oslogin-certificates設為FALSE,藉此停用 VM 中繼資料中的憑證。
後續步驟
- 進一步瞭解 OS Login。
- 瞭解如何設定採用兩步驟驗證機制的 OS 登入。
- 瞭解如何管理機構中的 OS 登入。