管理 SSH 金鑰
若要存取 IBM Cloud® Virtual Servers for Virtual Private Cloud 實例,您必須具有可供使用的 SSH 金鑰。 您可以在 IBM Cloud 主控台、CLI 及 API 中建立、更新及刪除 SSH 金鑰。
使用 IBM Cloud 主控台或 CLI 來管理金鑰,不會影響已建立之實例中的金鑰。 (對於現有 Linux 實例,您可以直接在實例的 ~/.ssh/ 目錄中編輯金鑰。)
IBM Cloud® Virtual Private Cloud 支援兩種不同類型的公開 SSH 金鑰。
- RSA
- Ed25519
您可以使用使用者介面來產生新的 RSA 金鑰組。 可以上傳預先存在的 RSA 和 Ed25519 SSH 金鑰。 只有在作業系統支援此金鑰類型時,才能使用 Ed25519。 Ed25519 無法與 Windows 或 VMware 映像檔搭配使用。
開始之前
若要建立虛擬伺服器實例,您必須建立或上傳 SSH 金鑰並使其可用,以便在佈建實例之後可以連接至實例。
使用 IBM Cloud 主控台管理 SSH 金鑰
當您佈建虛擬伺服器時,可以建立新的 SSH 金鑰,從現有 SSH 金鑰的可用清單中選取或上傳新的 SSH 金鑰。
-
在 IBM Cloud控制台中,前往導航選單圖示
> 基礎架構
> 計算 > SSH 金鑰。 會顯示任何現有的 SSH 金鑰。
-
在 VPC 的 SSH 金鑰 標籤上,按一下 SSH 金鑰的「動作」圖示
,然後從可用的選項中選取。 | 行動 | ----------------- | --------------------------- | | 重新命名 | 更新現有的 SSH 金鑰後,該金鑰會立即重新命名。| | 刪除 SSH 金鑰後,當您提供實體或在現有實體上執行作業系統重新載入時,就無法再使用該金鑰。 但是,該金鑰仍然可以在您之前使用該金鑰佈建的任何實體上使用,而且您可以使用該金鑰登入。|
即會顯示特定資源群組的可用地區清單。
使用 CLI 管理 SSH 金鑰
您也可以使用 CLI 來管理 SSH 金鑰。
確定已安裝 IBM Cloud CLI vpc-infrastructure 外掛程式。 如需詳細資訊,請參閱 IBM Cloud CLI for VPC。
| 動作 | 指令 | 後續情形 |
|---|---|---|
| 建立 SSH 金鑰。 | ibmcloud is key-create |
建立 SSH 金鑰之後,會將它新增至金鑰清單。 |
| 檢視金鑰詳細資料。 | ibmcloud is key |
您可以檢視金鑰的名稱和金鑰的 ID。 |
| 列出金鑰。 | ibmcloud is keys |
您可以檢視所有現有 SSH 金鑰。 |
| 更新金鑰。 | ibmcloud is key-update |
更新現有金鑰之後,會立即重新命名金鑰。 |
| 刪除金鑰。 | ibmcloud is key-delete |
移除 SSH 金鑰後,當您提供實體或在現有實體上執行作業系統重新載入時,就無法再使用該金鑰。 但是,該金鑰在您之前使用該金鑰佈建的任何實體上仍然可用,而且您可以使用該金鑰登入。 |
使用 API 管理 SSH 金鑰
您也可以使用 API 管理 SSH 金鑰。 如需下列範例中 $vpc_api_endpoint 及 $iam_token 變數的相關資訊,請參閱 Virtual Private Cloud API 簡介 中的「鑑別」及「端點 URL」小節。
使用 Terraform 管理 SSH 金鑰
您也可以使用 Terraform 管理 SSH 金鑰。 如需相關資訊,請參閱 ibm_is_ssh_keys。
使用使用者介面列出所有 SSH 金鑰
若要列出所有 SSH 金鑰,請完成下列步驟。
- 在 IBM Cloud控制台中,前往導航選單圖示
> 基礎架構
> 計算 > SSH 金鑰。
- 會顯示任何現有的 SSH 金鑰。
使用 CLI 列出所有 SSH 金鑰
若要檢視所有現有的 SSH 金鑰,請使用 ibmcloud is keys 指令。
使用 --all-resource-groups 選項來列出所有可用資源群組的 SSH 金鑰。 您可以選擇性地過濾清單,以僅包含特定資源群組的 SSH 金鑰。 使用 RESOURCE_GROUP_ID 或 RESOURCE_GROUP_NAME 變數來指定資源群組。 如需相關資訊,請參閱 ibmcloud is keys。
ibmcloud is keys [--all-resource-groups]
使用 API 列出所有 SSH 金鑰
若要使用 API 列出所有 SSH 金鑰,請使用 列出所有金鑰。
curl -X GET "$vpc_api_endpoint/v1/keys?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"
使用 Terraform 列出所有 SSH 金鑰
若要使用 Terraform 列出所有 SSH 金鑰,請使用 ibm_is_ssh_keys。
data "ibm_is_ssh_keys" keys {}
使用使用者介面檢視 SSH 金鑰的詳細資料
您可以檢視 SSH 金鑰的下列詳細資料。
- 名稱
- 資源群組
- 指紋
- 類型
- 長度
- 建立日期(本端)
若要檢視 SSH 金鑰的詳細資料,請完成下列步驟。
- 在 IBM Cloud控制台中,前往導航選單圖示
> 基礎架構
> 計算 > SSH 金鑰。
- 在 VPC 的 SSH 金鑰 頁面上,會顯示所有現有 SSH 金鑰的清單。
- 從 動作 功能表中,您可以 重新命名 或 刪除 SSH 金鑰。
使用 CLI 檢視 SSH 金鑰的詳細資料
您可以使用 ibmcloud is key 指令來檢視金鑰的名稱及金鑰的 ID。 使用 KEY 變數來指定 SSH 金鑰的名稱。 如需相關資訊,請參閱 VPC CLI 參考手冊中的 ibmcloud is key。
ibmcloud is key KEY
使用 API 來檢視 SSH 金鑰的詳細資料
若要使用 API 來擷取特定金鑰的資訊,請使用 擷取金鑰。
針對 $id 變數,指定您要顯示其詳細資料之 SSH 金鑰的名稱。
curl -X GET "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"
使用 Terraform 檢視 SSH 金鑰的詳細資料
若要使用 Terraform 擷取特定金鑰的資訊,請使用 ibm_is_ssh_keys。
針對 name 變數,指定您要顯示其詳細資料之 SSH 金鑰的名稱。
data "ibm_is_ssh_key" "example" {
name = "example-ssh-key"
}
使用使用者介面建立 SSH 金鑰
請使用下列步驟來建立新的 SSH 金鑰。 您只能建立 RSH SSH 金鑰類型。 若要使用 Ed25519 SSH 金鑰,必須匯入該 SSH 金鑰。 如需相關資訊,請參閱如需相關資訊,請參閱 使用使用者介面匯入 SSH 金鑰。
-
在 IBM Cloud控制台中,前往導航選單圖示
> 基礎架構
> 計算 > SSH 金鑰。
-
按一下 建立,然後輸入表格 1 中的資訊。| 欄位 | 值 | | --- | --- | | 位置 | 位置由區域(特定地理區域)和區域(區域內的容錯資料中心)組成。 選擇您要建立 SSH 金鑰的位置。| | 名稱 | SSH 金鑰需要名稱-我知道 | | 資源群組 | 為 SSH 金鑰選擇資源群組。| | 標籤 | 您可以將使用者標籤指派給 SSH 金鑰,以便您可以輕鬆過濾 SSH 金鑰清單。 如需相關資訊,請參閱 使用標籤-我知道| | 存取管理標籤 | 存取管理標籤可協助您在特定資源上套用彈性的存取政策。 如需相關資訊,請參閱 使用標籤控制對資源的存取權 使用者介面指導教學-我知道 | | SSH 金鑰類型 | 預設值為
rsa。您可以使用使用者介面來產生新的 RSA 金鑰組。 可以上傳預先存在的 RSA 和 Ed25519 SSH 金鑰。 只有在作業系統支援此金鑰類型時,才能使用 Ed25519。 Ed25519 不能用於 Windows 或 VMware 影像。| -
選擇「為我產生金鑰對」。
-
選擇性地按一下 取得範例 API 呼叫,以取得含有您可以複製的所有 SSH 金鑰資訊的 API 程式碼。
-
按一下建立。
新的 SSH 金鑰現在會顯示在使用者介面上的 SSH 金鑰清單中。
使用使用者介面匯入 SSH 金鑰
您可以使用兩種方式來匯入 SSH 金鑰。 您可以從本端檔案上傳公開金鑰。 或者,您可以複製公開金鑰資訊並貼到使用者介面中。
請使用下列步驟,從本端檔案匯入 SSH 金鑰。
-
在 IBM Cloud控制台中,前往導航選單圖示
> 基礎架構
> 計算 > SSH 金鑰。
-
按一下 建立,然後輸入表格 1 中的資訊。| 欄位 | 值 | | --- | --- | | 位置 | 位置由區域(特定地理區域)和區域(區域內的容錯資料中心)組成。 選擇您要建立 SSH 金鑰的位置。| | 名稱 | SSH 金鑰需要名稱-我知道 | | 資源群組 | 為 SSH 金鑰選擇資源群組。| | 標籤 | 您可以將使用者標籤指派給 SSH 金鑰,以便您可以輕鬆過濾 SSH 金鑰清單。 如需相關資訊,請參閱 使用標籤-我知道| | 存取管理標籤 | 存取管理標籤可協助您在特定資源上套用彈性的存取政策。 如需相關資訊,請參閱 使用標籤控制對資源的存取權 使用者介面指導教學-我知道 | | SSH 金鑰類型 | 選取 SSH 金鑰的金鑰類型。 預設值為
rsa。 只有在作業系統支援此金鑰類型時,才能使用ed25519SSH 金鑰類型來建立實例。 此金鑰類型無法與 Windows 或 VMware 映像檔搭配使用-我知道 | -
選擇「提供現有公開金鑰
-
按一下上傳公開金鑰。
-
選取公開金鑰檔案,然後按一下 Open(開啟 )。 副檔名
.pub通常會指出哪個檔案包含公開金鑰。 -
選擇性地按一下 取得範例 API 呼叫,以取得含有您可以複製的所有 SSH 金鑰資訊的 API 程式碼。
-
按一下建立。
如果您從終端機複製 SSH 金鑰以將金鑰新增至 VPC,則有時會引入額外換行,導致剖析錯誤。 若要避免此問題,請先將 SSH 金鑰貼到文字編輯器中,並移除任何額外的換行。 然後,從文字編輯器複製 SSH 金鑰,並將它貼至 VPC 使用者介面、CLI 或 API。
您匯入的 SSH 金鑰現在會顯示在使用者介面上的 SSH 金鑰清單中。
使用 CLI 匯入 SSH 金鑰
若要使用 CLI 匯入 SSH 金鑰,請使用 ibmcloud is key-create 指令。 您匯入的檔案是 id_rsa.pub 或 id_ed25519.pub,其中包含您的公開金鑰。 您必須使用 KEY_NAME 變數來指定 SSH 金鑰的名稱或 ID,以及使用 KEY 變數來匯入公開 SSH 金鑰。 使用 --key-type 選項指定 SSH 金鑰類型。 您可以選擇性地在建立 SSH 金鑰時指定資源群組。 使用 RESOURCE_GROUP_ID 或 RESOURCE_GROUP_NAME 變數來指定資源群組。 請參閱 VPC CLI 參考手冊中的 ibmcloud is key-create。
ibmcloud is key-create KEY_NAME (KEY | @KEY_FILE) [--resource-group-id RESOURCE_GROUP_ID | --resource-group-name RESOURCE_GROUP_NAME] [--key-type KEY_TYPE]
使用 API 匯入 SSH 金鑰
若要使用 API 來匯入新的 SSH 金鑰,請使用 建立金鑰。 您匯入的檔案是 id_rsa.pub 或 id_ed25519.pub,其中包含您的公開金鑰。 您無法使用 API 來建立全新 SSH 金鑰。 不過,您可以使用使用者介面來建立新的 SSH 金鑰,並從使用者介面產生您需要的 API 程式碼 Snippet,其中包含新的 SSH
金鑰。 如需相關資訊,請參閱 使用使用者介面建立 SSH 金鑰。
針對 name 內容,指定 SSH 金鑰的名稱。 對於 public_key 內容,請輸入公開金鑰資訊。 對於 type 內容,請指定 rsa 或 ed25519 作為 SSH 金鑰類型。
只有在作業系統支援此金鑰類型時,才能使用 Ed25519 SSH 金鑰類型來建立實例。 此金鑰類型無法與 Windows 或 VMware 映像檔搭配使用。
curl -X POST "$vpc_api_endpoint/v1/keys?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token" -d '{
"name":"my-key-1",
"public_key":"AAAAB3NzaC1yc2EAAAADAQABAAABAQDDGe50Bxa5T5NDddrrtbx2Y4/VGbiCgXqnBsYToIUKoFSHTQl5IX3PasGnneKanhcLwWz5M5MoCRvhxTp66NKzIfAz7r+FX9rxgR+ZgcM253YAqOVeIpOU408simDZKriTlN8kYsXL7P34tsWuAJf4MgZtJAQxous/2byetpdCv8ddnT4X3ltOg9w+LqSCPYfNivqH00Eh7S1Ldz7I8aw5WOp5a+sQFP/RbwfpwHp+ny7DfeIOokcuI42tJkoBn7UsLTVpCSmXr2EDRlSWe/1M/iHNRBzaT3CK0+SwZWd2AEjePxSnWKNGIEUJDlUYp7hKhiQcgT5ZAnWU121oc5En",
"type":"rsa"
}'
使用 Terraform 匯入 SSH 金鑰
若要使用 Terraform 匯入新的 SSH 金鑰,請使用 ibm_is_ssh_keys。
要匯入新的 SSH 金鑰,請完成下列步驟。
-
建立具有必要值的資源區塊類型
ibm_is_ssh_key。 對於name屬性,請指定 SSH 金鑰的虛擬名稱。 對於public_key屬性,請在虛擬公開金鑰資訊中輸入。resource "ibm_is_ssh_key" "example_sshkey" { name = "my-key" public_key = "public-key" } -
建立資源之後,請執行下列 Terraform 指令來匯入 SSH 金鑰。
terraform import ibm_is_ssh_key.example_sshkey d7bec597-4726-451f-8a63-e62e6f19c32c
-
請改良配置以符合狀態。 複製資源區塊詳細資料以避免取代資源區塊。
resource "ibm_is_ssh_key" "example_sshkey" { name = "example-sshkey" public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR" type = "rsa" }
使用 CLI 更新 SSH 金鑰
您可以使用 ibmcloud is key-update 指令來更新現有金鑰。 更新現有金鑰之後,會立即重新命名金鑰。 如需相關資訊,請參閱 ibmcloud is key-delete。 您必須使用 KEY 變數來指定現行 SSH 金鑰名稱,以及使用 --name 選項中的
NEW_NAME 變數來指定新的 SSH 金鑰名稱。
ibmcloud is key-update KEY [--name NEW_NAME]
使用 API 來更新 SSH 金鑰
若要使用 API 來更新現有的 SSH 金鑰,請使用 更新金鑰。 更新現有金鑰之後,會立即重新命名金鑰。
對於 $id 變數,請指定 SSH 金鑰的現行名稱。 針對 name 內容,指定 SSH 金鑰的新名稱。
curl -X PATCH "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token" -d '{ "name": "my-key-1-updated" }'
使用 Terraform 更新 SSH 金鑰
若要使用 Terraform 更新現有 SSH 金鑰,請使用 ibm_is_ssh_keys。 更新現有金鑰之後,會立即重新命名金鑰。
-
更新 SSH 金鑰資源區塊。 針對
name內容,指定 SSH 金鑰的新名稱。resource "ibm_is_ssh_key" "example_sshkey" { name = "new-example-sshkey" public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCKVmnMOlHKcZK8tpt3MP1lqOLAcqcJzhsvJcjscgVERRN7/9484SOBJ3HSKxxNG5JN8owAjy5f9yYwcUg+JaUVuytn5Pv3aeYROHGGg+5G346xaq3DAwX6Y5ykr2fvjObgncQBnuU5KHWCECO/4h8uWuwh/kfniXPVjFToc+gnkqA+3RKpAecZhFXwfalQ9mMuYGFxn+fwn8cYEApsJbsEmb0iJwPiZ5hjFC8wREuiTlhPHDgkBLOiycd20op2nXzDbHfCHInquEe/gYxEitALONxm0swBOwJZwlTDOB7C6y2dzlrtxr1L59m7pCkWI4EtTRLvleehBoj3u7jB4usR" type = "rsa" } -
執行
terraform apply以使用新名稱更新資源。
使用 CLI 刪除 SSH 金鑰
若要使用 CLI 來刪除一個以上 SSH 金鑰,請使用 ibmcloud is key-delete 指令。 如需相關資訊,請參閱 ibmcloud is key-delete。 指定您使用 KEY 變數刪除之每一個 SSH 金鑰的名稱。
ibmcloud is key-delete (KEY1 KEY2 ...)
使用 API 刪除 SSH 金鑰
若要使用 API 來刪除一個以上 SSH 金鑰,請使用 刪除金鑰。
針對 $id 變數,指定您要刪除之 SSH 金鑰的名稱。
curl -X DELETE "$vpc_api_endpoint/v1/keys/$id?version=2023-03-30&generation=2" -H "Authorization: Bearer $iam_token"
使用 Terraform 刪除 SSH 金鑰
若要使用 Terraform 來刪除 SSH 金鑰,請使用 ibm_is_ssh_keys。
對於 example_sshkey 屬性,請將此屬性取代為您要刪除的 SSH 金鑰。
terraform destroy --target ibm_is_ssh_keys.example_sshkey