本文說明如何從 VM 移除及封鎖 SSH 金鑰,防止使用者存取虛擬機器 (VM) 執行個體。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Trusted Cloud by S3NS 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,請執行下列指令初始化 Google Cloud CLI:
gcloud init
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI,然後 使用同盟身分登入 gcloud CLI。 登入後,請執行下列指令初始化 Google Cloud CLI:
gcloud init
詳情請參閱 Trusted Cloud 驗證說明文件中的「Authenticate for using REST」。
移除安全殼層金鑰
您可以使用Trusted Cloud 控制台、gcloud CLI 或 Compute Engine API,從專案或執行個體中繼資料中移除公開 SSH 金鑰。
從特定使用者的中繼資料中移除最後一個金鑰,或是特定使用者的中繼資料中最後一個金鑰過期後,Compute Engine 會刪除 VM 上的使用者
~/.ssh/authorized_keys
檔案。從專案中繼資料移除公開金鑰
從專案中繼資料移除公開 SSH 金鑰,即可移除專案中所有 VM 的存取權。
使用 gcloud CLI 和 Compute Engine API 從中繼資料移除金鑰時,您必須先擷取現有金鑰清單,編輯金鑰清單以移除不需要的金鑰,然後以要保留的金鑰清單覆寫舊金鑰,如下一節所述。
主控台
如要使用Trusted Cloud 控制台從專案中繼資料移除公開安全殼層金鑰,請按照下列步驟操作:
前往 Trusted Cloud 控制台的「Metadata」頁面。
按一下「SSH keys」(SSH 金鑰) 分頁標籤。
按一下頁面頂端的「編輯」
。找出要移除的安全殼層金鑰,然後按一下金鑰旁邊的
刪除按鈕。針對要移除的每個 SSH 金鑰重複上述步驟。
按一下 [儲存]。
gcloud
如要使用 gcloud CLI 從專案中繼資料移除公開 SSH 金鑰,請按照下列步驟操作:
執行
gcloud compute project-info describe
指令,取得專案的中繼資料:gcloud compute project-info describe
輸出結果會與下列內容相似:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...複製
ssh-keys
中繼資料值。在工作站上建立並開啟新的文字檔案。
在檔案中貼上剛才複製的安全殼層金鑰清單,然後刪除要從專案中繼資料中移除的金鑰。
儲存並關閉檔案。
執行
gcloud compute project-info add-metadata
指令,設定全專案ssh-keys
值:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
請將
KEY_FILE
替換為下列其中一個值:- 如果您專案已有安全殼層金鑰,請輸入您在上一個步驟中建立的檔案路徑
- 如果專案沒有現有的 SSH 金鑰,則為新公開 SSH 金鑰檔案的路徑
REST
如要使用 Compute Engine API 從專案中繼資料移除公開安全殼層金鑰,請執行下列步驟:
使用
projects.get
方法從中繼資料取得fingerprint
和ssh-keys
值。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID
將
PROJECT_ID
替換為您的專案 ID。回應類似以下內容:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
複製 SSH 金鑰值清單,然後刪除要移除的金鑰。
使用
projects.setCommonInstanceMetadata
移除 SSH 金鑰。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS" } ] "fingerprint": "FINGERPRINT" }
更改下列內容:
PROJECT_ID
:您的專案 IDEXISTING_SSH_KEYS
:要保留的安全殼層金鑰清單FINGERPRINT
:projects.get
要求回應中的fingerprint
值
從執行個體中繼資料移除公開安全殼層金鑰
從執行個體中繼資料移除公開安全殼層金鑰,即可移除單一 VM 的存取權。
使用 gcloud CLI 和 Compute Engine API 從中繼資料移除金鑰時,您必須先擷取現有金鑰清單,編輯金鑰清單以移除不需要的金鑰,然後使用要保留的金鑰清單覆寫舊金鑰,如下一節所述。
主控台
如要使用Trusted Cloud console 從執行個體中繼資料移除公開安全殼層金鑰,請執行下列步驟:
前往 Trusted Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要移除金鑰的 VM 名稱。
按一下 [編輯]。
在「SSH Keys」(安全殼層金鑰) 專區中,點選「Show and edit」(顯示與編輯)。該區段會展開並顯示所有執行個體層級公開安全殼層金鑰。
在要移除的 SSH 金鑰旁,按一下「刪除」按鈕
。針對要移除的每個 SSH 金鑰重複上述步驟。
按一下 [儲存]。
gcloud
如要使用 gcloud CLI 從執行個體中繼資料移除公開 SSH 金鑰,請執行下列步驟:
執行
gcloud compute instances describe
指令,取得 VM 的中繼資料:gcloud compute instances describe VM_NAME
將 VM_NAME 替換為要新增或移除公開 SSH 金鑰的 VM 名稱。
輸出結果會與下列內容相似:
... metadata: ...
- key: ssh-keys
value: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...複製
ssh-keys
中繼資料值。在本機工作站上建立並開啟一個新的文字檔案。
在檔案中貼上剛才複製的安全殼層金鑰清單,然後移除要刪除的金鑰。
儲存並關閉檔案。
執行
gcloud compute project-info add-metadata
指令,設定全專案ssh-keys
值:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
更改下列內容:
VM_NAME
:要移除安全殼層金鑰的 VMKEY_FILE
:包含所有專案安全殼層金鑰清單的檔案路徑
REST
如要使用 Compute Engine API 從執行個體中繼資料移除公開安全殼層金鑰,請按照下列步驟操作:
使用
instances.get
方法從中繼資料取得fingerprint
和ssh-keys
值。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
更改下列內容:
PROJECT_ID
:您的專案 IDZONE
:您要新增 SSH 金鑰的 VM 所在可用區VM_NAME
:要新增 SSH 金鑰的 VM
回應類似以下內容:
... "fingerprint": "utgYE_XWtE8=", "items": [ { "key": "ssh-keys", "value": "cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF\nbaklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8 google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"}" } ] ...
複製 SSH 金鑰值清單,然後刪除要移除的金鑰。
使用
instances.setMetadata
移除 SSH 金鑰。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS } ] "fingerprint": "FINGERPRINT" }
更改下列內容:
PROJECT_ID
:您的專案 IDEXISTING_SSH_KEYS
:projects.get
要求回應中的ssh-keys
鍵值FINGERPRINT
:instances.get
要求回應中的fingerprint
值
封鎖使用中繼資料安全殼層金鑰的 VM 專案安全殼層金鑰
您可以封鎖 VM 的專案 SSH 金鑰,防止 VM 接受儲存在專案中繼資料中的 SSH 金鑰。您可以在建立 VM 時或建立 VM 後,封鎖 VM 的專案安全殼層金鑰。
在建立 VM 時,從 VM 封鎖專案安全殼層金鑰
您可以在建立 VM 時,使用Trusted Cloud 控制台、gcloud CLI 或 Compute Engine API,禁止 VM 使用專案 SSH 金鑰。
主控台
如要建立執行個體,並使用 Trusted Cloud 控制台禁止該執行個體接受專案中繼資料中儲存的安全殼層金鑰,請按照下列步驟操作:
前往 Trusted Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
如要封鎖專案安全殼層金鑰,請按照下列步驟操作:
按一下導覽選單中的「Security」(安全性)。
展開「管理存取權」部分。
如要停用 OS 登入,請清除「透過 IAM 權限控管 VM 存取權」核取方塊。
勾選「封鎖全專案安全殼層金鑰」核取方塊。
視需要指定其他設定選項。詳情請參閱「建立執行個體時的設定選項」。
如要建立並啟動執行個體,請按一下「建立」。
gcloud
如要使用 gcloud CLI 建立 VM,並禁止該 VM 接受儲存在專案中繼資料中的 SSH 金鑰,請使用
gcloud compute instances create
指令:gcloud compute instances create VM_NAME \ --metadata block-project-ssh-keys=TRUE
將
VM_NAME
替換為新 VM 的名稱。REST
如要建立 VM,並使用 Compute Engine 封鎖 VM 接受專案中繼資料中儲存的 SSH 金鑰,請建構對
instances.insert
方法的POST
要求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
更改下列內容:
PROJECT_ID
:專案 IDZONE
:VM 所在的可用區
在要求主體中,於
items
屬性中提供使用者名稱和公開安全殼層金鑰:... { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] } ...
在建立 VM 後封鎖 VM 的專案安全殼層金鑰
您可以在建立 VM 後,使用Trusted Cloud 控制台、gcloud CLI 或 Compute Engine API,封鎖 VM 的專案 SSH 金鑰。
主控台
如要使用 Trusted Cloud 控制台,禁止 VM 接受專案中儲存的安全殼層金鑰連線,請按照下列步驟操作:
前往 Trusted Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要封鎖專案 SSH 金鑰的 VM 名稱。
按一下 [編輯]。
在「SSH Keys」(安全殼層金鑰) 下方,選取「Block project-wide SSH keys」(封鎖全專案安全殼層金鑰) 核取方塊。
安全殼層金鑰的連線設定編輯完成後,請按一下 [Save] (儲存)。
gcloud
如要使用 gcloud CLI,禁止 VM 接受專案中繼資料中儲存的 SSH 金鑰連線,請執行下列操作:
執行
gcloud compute instances add-metadata
指令:gcloud compute instances add-metadata VM_NAME --metadata block-project-ssh-keys=TRUE
將
VM_NAME
替換為要封鎖全專案公開 SSH 金鑰的 VM 名稱。REST
如要使用 Compute Engine API,禁止 VM 接受專案中繼資料中儲存的 SSH 金鑰連線,請按照下列步驟操作:
使用
instances.get
方法從中繼資料取得fingerprint
。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
更改下列內容:
PROJECT_ID
:您的專案 IDZONE
:您要新增 SSH 金鑰的 VM 所在可用區VM_NAME
:要新增 SSH 金鑰的 VM
回應類似以下內容:
... "fingerprint": "utgYE_XWtE8=" ...
使用
instances.setMetadata
方法將block-project-ssh-keys
設為TRUE
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "block-project-ssh-keys", "value": TRUE } ] "fingerprint": "FINGERPRINT" }
更改下列內容:
PROJECT_ID
:您的專案 IDZONE
是執行個體所在的區域INSTANCE_NAME
是要封鎖全專案金鑰的執行個體。FINGERPRINT
:instances.get
要求的相關回應中fingerprint
的值。
後續步驟
- 使用 Google 工具連線至 VM,不必管理自己的 SSH 金鑰。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-30 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-09-30 (世界標準時間)。"],[],[],null,[]] -