事前準備
- 如要瞭解如何管理 Compute Engine VM 的存取權,請參閱「選擇存取方式」。
- 如果您尚未建立安全殼層金鑰組,請先完成這項作業。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用的是外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
將金鑰新增至使用 OS 登入功能的 VM
使用 OS 登入的 VM 會接受與 Google 帳戶相關聯的 SSH 金鑰。您可以使用 gcloud CLI 或 OS 登入 API,將公開安全殼層金鑰與 Google 帳戶建立關聯。如果您是機構管理員,可以使用 Directory API 將安全殼層金鑰新增至使用者帳戶。
將安全殼層金鑰新增至 Google 帳戶後,Compute Engine 會結合與 Google 帳戶相關聯的電子郵件地址中的使用者名稱和網域,為您產生使用者名稱。舉例來說,如果您的電子郵件地址是 cloudysanfrancisco@gmail.com,則使用者名稱為 cloudysanfrancisco_gmail_com。如果您在組織外部的專案中新增安全殼層金鑰,使用者名稱會加上 ext_ 前置字元,例如 ext_cloudysanfrancisco_gmail_com。貴機構組織管理員可以使用 Directory API 自訂使用者名稱。如果您已設定使用者名稱,Compute Engine 會在您新增安全殼層金鑰時使用該使用者名稱。
如要查看儲存在 OS 登入設定檔中的安全殼層金鑰,請執行 gcloud compute os-login describe-profile 指令。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
如要將公開安全殼層金鑰新增至帳戶,請使用
gcloud compute os-login ssh-keys add指令:gcloud compute os-login ssh-keys add \ --key-file=KEY_FILE_PATH \ --project=PROJECT \ --ttl=EXPIRE_TIME
更改下列內容:
KEY_FILE_PATH:工作站上公開安全殼層金鑰的路徑。金鑰必須採用public-openssh格式PROJECT:選用:您打算使用安全殼層金鑰的專案。如果您要在貴機構外部的專案中使用安全殼層金鑰,或您不是 Cloud Identity 機構的成員,請指定這個欄位EXPIRE_TIME:選用:SSH 金鑰的到期時間舉例來說,如果指定
30m,SSH 金鑰會在 30 分鐘後到期。這項旗標使用下列單位:
s秒m分鐘h小時d天
Terraform
如要將公開安全殼層金鑰新增至帳戶,請使用 google_client_openid_userinfo 資源和 google_os_login_ssh_public_key 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要將公開安全殼層金鑰新增至帳戶,請使用 OS 登入 API 的 users.importSshPublicKey 方法:
POST https://oslogin.googleapis.com/v1/users/ACCOUNT_EMAIL:importSshPublicKey
{
"key": "SSH_KEY",
"expirationTimeUsec": "EXPIRATION_TIMESTAMP"
}
更改下列內容:
ACCOUNT_EMAIL:與帳戶相關聯的電子郵件地址SSH_KEY:要新增至帳戶的公開金鑰EXPIRATION_TIMESTAMP:金鑰的到期時間,以自 Unix 紀元以來的微秒數表示 (1 秒 = 106 微秒)
將安全殼層金鑰新增至使用中繼資料安全殼層金鑰的 VM
不使用 OS 登入 的 VM,會將安全殼層金鑰儲存在 Compute Engine 專案和執行個體中繼資料。如果 VM 啟用 OS 登入,VM 的訪客代理程式會忽略儲存在中繼資料中的金鑰。
您可以使用儲存在專案中繼資料的安全殼層金鑰,存取專案中的所有 VM。您可以使用儲存在執行個體中繼資料中的安全殼層金鑰,存取個別 VM。
Compute Engine 不會在安全殼層金鑰到期時,自動從中繼資料中移除過期的金鑰,但過期的金鑰無法用於建立與 VM 的新連線。如要從中繼資料中移除過期的金鑰,請參閱「從使用中繼資料金鑰的 VM 移除安全殼層金鑰」。
您可以使用 Google Cloud 控制台、gcloud CLI 或 REST,將公開安全殼層金鑰新增至專案或 VM 執行個體中繼資料。您無法為安全殼層金鑰設定可用區中繼資料值。
將安全殼層金鑰新增至專案中繼資料
您可以將公開安全殼層金鑰新增至專案中繼資料,存取專案中的所有 VM,但封鎖專案層級安全殼層金鑰的 VM 除外。如要進一步瞭解如何封鎖專案層級的安全殼層金鑰,請參閱「封鎖使用中繼資料安全殼層金鑰的 VM 專案安全殼層金鑰」。
控制台
如要使用Google Cloud 控制台將公開安全殼層金鑰新增至專案中繼資料,請執行下列操作:
前往 Google Cloud 控制台的「Metadata」頁面。
按一下「安全殼層金鑰」分頁標籤。
按一下 [編輯]。
按一下 [新增項目]。
在開啟的「SSH key」欄位中,新增公開安全殼層金鑰。金鑰必須採用下列其中一種格式:
- 沒有到期時間的金鑰格式:
KEY_VALUE USERNAME
- 有到期時間的金鑰格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設為允許根登入,否則
USERNAME不得為root。詳情請參閱「以根使用者身分連線至 Linux VM」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
按一下 [儲存]。
gcloud
在 Google Cloud 控制台啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
如果專案中繼資料中已有安全殼層金鑰,每次使用 gcloud CLI 新增安全殼層金鑰時,都必須重新將現有金鑰新增至專案中繼資料。如果沒有重新加入現有金鑰,新增金鑰時會清除現有金鑰。
如要使用 gcloud CLI 將公開安全殼層金鑰新增至專案中繼資料,請按照下列步驟操作:
如果專案已有專案層級的公開安全殼層金鑰,請從中繼資料取得這些金鑰,並新增至新檔案:
執行
gcloud compute project-info describe指令,取得專案的安全殼層金鑰:gcloud compute project-info describe \ --format="value(commonInstanceMetadata[items][ssh-keys])"
輸出結果會與下列內容相似:
username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... username:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...
複製
ssh-keys中繼資料值。在工作站建立及開啟新的文字檔。
在檔案中貼上剛才複製的金鑰清單。
在清單結尾新增金鑰,格式如下:
- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
儲存並關閉檔案。
執行
gcloud compute project-info add-metadata指令,設定專案層級的ssh-keys值:gcloud compute project-info add-metadata --metadata-from-file=ssh-keys=KEY_FILE
將
KEY_FILE替換為下列其中一個值:- 如果您專案已有 SSH 金鑰,請輸入您在上一個步驟中建立的檔案路徑
- 新公開安全殼層金鑰檔案的路徑 (如果專案沒有現有的安全殼層金鑰)
Terraform
如要將公開安全殼層金鑰新增至專案中繼資料,請使用 google_compute_project_metadata 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如果專案中繼資料中已有安全殼層金鑰,每次使用 Compute Engine API 新增安全殼層金鑰時,都必須重新將現有金鑰新增至專案中繼資料。如果沒有重新新增現有金鑰,新增金鑰時會清除現有金鑰。
如要使用 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"}" } ] ...使用
projects.setCommonInstanceMetadata方法新增ssh-keys值。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/setCommonInstanceMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }更改下列內容:
PROJECT_ID:專案 IDEXISTING_SSH_KEYS:projects.get要求的ssh-keys鍵值FINGERPRINT:projects.get請求回應中的fingerprint值NEW_SSH_KEY:新的安全殼層金鑰,格式須為下列其中一種:- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
將安全殼層金鑰新增至執行個體中繼資料
您可以在建立 VM 時,或建立 VM 後,將安全殼層公開金鑰新增至執行個體中繼資料。
在建立 VM 時,將安全殼層金鑰新增至執行個體中繼資料
使用Google Cloud 控制台、gcloud CLI 或 Compute Engine API 建立 VM 時,可以將安全殼層金鑰新增至執行個體中繼資料。
控制台
如要使用 Google Cloud 控制台建立執行個體,並同時將公開安全殼層金鑰新增至執行個體中繼資料,請按照下列步驟操作:
前往 Google Cloud 控制台的「建立執行個體」頁面。
如要將公開安全殼層金鑰新增至執行個體中繼資料,請按照下列步驟操作:
按一下導覽選單中的「Security」(安全性)。
展開「管理存取權」部分。
如要停用 OS 登入,請取消勾選「透過 IAM 權限控管 VM 存取權」核取方塊。
如要允許專案中繼資料中的公開安全殼層金鑰存取執行個體,請取消勾選「Block project-wide SSH keys」(封鎖專案層級的安全殼層金鑰) 核取方塊。
在「Add manually generated SSH keys」(新增手動產生的安全殼層金鑰) 專區中,按一下「Add item」(新增項目)。
在文字欄位中新增公開金鑰。金鑰必須採用下列其中一種格式:
- 沒有到期時間的金鑰格式:
KEY_VALUE USERNAME
- 有到期時間的金鑰格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以根使用者身分連線至 Linux VM」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
選用:指定其他設定選項。詳情請參閱「建立執行個體時的設定選項」。
如要建立並啟動執行個體,請按一下「Create」(建立)。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
如要使用 gcloud CLI 建立 VM,並同時將公開安全殼層金鑰新增至執行個體中繼資料,請使用
gcloud compute instances create指令:gcloud compute instances create VM_NAME \ --metadata=ssh-keys=PUBLIC_KEY
更改下列內容:
VM_NAME:新 VM 的名稱PUBLIC_KEY:您的公開安全殼層金鑰,格式須為下列其中一種:- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
您可以使用
--metadata-from-file=ssh-keys=FILE_PATH旗標新增多個安全殼層金鑰。在檔案中,以其中一種格式新增使用者名稱和公開安全殼層金鑰清單。
Terraform
如要將公開安全殼層金鑰新增至執行個體中繼資料,請使用 google_compute_instance 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST
如要使用 Compute Engine 建立 VM,並同時將公開安全殼層金鑰新增至執行個體中繼資料,請建構對 instances.insert 方法的 POST 要求:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
更改下列內容:
PROJECT_ID:專案 IDZONE:VM 的可用區
在要求主體中,於 items 屬性中提供使用者名稱和公開安全殼層金鑰:
...
{
"items": [
{
"key": "ssh-keys",
"value": "PUBLIC_KEY"
}
]
}
...
將 PUBLIC_KEY 替換為公開金鑰,格式如下:
- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設為允許根登入,否則
USERNAME不得為root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱開頭必須加上 AD 網域,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採用 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
如要新增多個安全殼層金鑰,請在金鑰之間加入 \n。
在建立 VM 後,將安全殼層金鑰新增至執行個體中繼資料
建立 VM 後,您可以使用Google Cloud 控制台、gcloud CLI 或 Compute Engine API,將安全殼層金鑰新增至執行個體中繼資料。
控制台
如要使用Google Cloud 控制台將公開安全殼層金鑰新增至執行個體中繼資料,請按照下列步驟操作:
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
按一下要新增安全殼層金鑰的 VM 名稱。
按一下 [編輯]。
在「安全殼層金鑰」下方,按一下「新增項目」。
在文字欄位中新增公開金鑰。金鑰必須採用下列其中一種格式:
- 沒有到期時間的金鑰格式:
KEY_VALUE USERNAME
- 有到期時間的金鑰格式:
KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以根使用者身分連線至 Linux VM」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
按一下 [儲存]。
gcloud
-
在 Google Cloud 控制台中啟用 Cloud Shell。
Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
如果執行個體中繼資料已有安全殼層金鑰,每次使用 gcloud CLI 新增安全殼層金鑰時,都必須重新將現有金鑰新增至執行個體中繼資料。如果未重新加入現有金鑰,新增金鑰會清除現有金鑰。
如要使用 gcloud CLI 將公開安全殼層金鑰新增至執行個體中繼資料,請執行下列操作:
如果 VM 已有執行個體層級的公開安全殼層金鑰,請從中繼資料取得這些金鑰,然後新增至新檔案:
執行
gcloud compute instances describe指令,取得 VM 的中繼資料:gcloud compute instances describe VM_NAME
將 VM_NAME 替換為要新增或移除公開安全殼層金鑰的 VM 名稱。
輸出結果會與下列內容相似:
... metadata: ...
- key: ssh-keysvalue: |- cloudysanfrancisco:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAu5kKQCPF... baklavainthebalkans:ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDQDx3FNVC8... google-ssh {"userName":"baklavainthebalkans","expireOn":"2021-06-14T16:59:03+0000"} ...複製
ssh-keys中繼資料值。在工作站建立及開啟新的文字檔。
在檔案中貼上剛才複製的金鑰清單。
在清單結尾新增金鑰,格式如下:
- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 儲存並關閉檔案。
執行
gcloud compute instances add-metadata指令來設定ssh-keys值:gcloud compute instances add-metadata VM_NAME --metadata-from-file ssh-keys=KEY_FILE
更改下列內容:
VM_NAME:要新增安全殼層金鑰的 VMKEY_FILE替換為下列其中一個值:- 如果您在 VM 中已有 SSH 金鑰,請提供您在上一個步驟中建立的檔案路徑
- 新公開安全殼層金鑰檔案的路徑 (如果 VM 沒有現有的安全殼層金鑰)
REST
如果執行個體中繼資料已有安全殼層金鑰,您每次使用 Compute Engine API 新增安全殼層金鑰時,都必須重新將現有金鑰新增至執行個體中繼資料。如果沒有重新新增現有車鑰,新增車鑰時會一併刪除現有車鑰。
如要使用 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:要新增安全殼層金鑰的 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"}" } ] ...使用
instances.setMetadata方法新增ssh-keys值。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "items": [ { "key": "ssh-keys", "value": "EXISTING_SSH_KEYS\nNEW_SSH_KEY" } ] "fingerprint": "FINGERPRINT" }更改下列內容:
PROJECT_ID:專案 IDEXISTING_SSH_KEYS:instances.get要求的ssh-keys鍵值FINGERPRINT:projects.get要求的fingerprint回應NEW_SSH_KEY:新的安全殼層金鑰,格式如下:- 沒有到期時間的金鑰格式:
USERNAME:KEY_VALUE
- 有到期時間的金鑰格式:
USERNAME:KEY_VALUE google-ssh {"userName":"USERNAME","expireOn":"EXPIRE_TIME"}
更改下列內容:
KEY_VALUE:安全殼層公開金鑰值USERNAME:您的使用者名稱。例如:cloudysanfrancisco或cloudysanfrancisco_gmail_com。如果是 Linux VM,除非您將 VM 設定為允許根登入,否則
USERNAME不能是root。詳情請參閱「以超級使用者身分連線至執行個體」。如果是使用 Active Directory (AD) 的 Windows VM,使用者名稱必須加上 AD 網域前置字元,格式為
DOMAIN\。舉例來說,ad.example.comAD 中的使用者cloudysanfrancisco具有example\cloudysanfrancisco的USERNAME。EXPIRE_TIME:金鑰到期時間,採 ISO 8601 格式。例如:2021-12-04T20:12:00+0000
- 沒有到期時間的金鑰格式:
後續步驟
- 瞭解如何連線至 VM。
- 瞭解如何管理 VM 的存取權。
- 瞭解如何將檔案轉移至 VM。
- 瞭解如何使用 SSH 連線至 Compute Engine 的 Linux VM。