IBM Cloud Docs
管理 SSH 金鑰

管理 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 金鑰。

  1. IBM Cloud控制台中,前往導航選單圖示選單圖示> 基礎架構VPC 圖示> 計算 > SSH 金鑰。 會顯示任何現有的 SSH 金鑰。

  2. VPC 的 SSH 金鑰 標籤上,按一下 SSH 金鑰的「動作」圖示 「其他動作」圖示,然後從可用的選項中選取。

    SSH 金鑰操作
    行動 描述
    重新命名 更新現有 SSH 金鑰後,該金鑰會立即重新命名。
    刪除 刪除 SSH 金鑰後,在配置實例或在現有實例上執行作業系統重新載入時,將無法再使用它。 但是,該金鑰在您先前使用它配置的任何實例上仍然可用,並且您可以使用它來登入。

    即會顯示特定資源群組的可用地區清單。

使用 CLI 管理 SSH 金鑰

您也可以使用 CLI 來管理 SSH 金鑰。

確定已安裝 IBM Cloud CLI vpc-infrastructure 外掛程式。 有關更多信息,請參閱 適用於 VPC 的IBM Cloud CLI

SSH 金鑰操作
動作 指令 後續情形
建立 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 金鑰,請完成下列步驟。

  1. IBM Cloud控制台中,前往導航選單圖示選單圖示> 基礎架構VPC 圖示> 計算 > SSH 金鑰
  2. 會顯示任何現有的 SSH 金鑰。

使用 CLI 列出所有 SSH 金鑰

若要檢視所有現有的 SSH 金鑰,請使用 ibmcloud is keys 指令。

使用 --all-resource-groups 選項來列出所有可用資源群組的 SSH 金鑰。 您可以選擇性地過濾清單,以僅包含特定資源群組的 SSH 金鑰。 使用 RESOURCE_GROUP_IDRESOURCE_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 金鑰的詳細資料,請完成下列步驟。

  1. IBM Cloud控制台中,前往導航選單圖示選單圖示> 基礎架構VPC 圖示> 計算 > SSH 金鑰
  2. VPC 的 SSH 金鑰 頁面上,會顯示所有現有 SSH 金鑰的清單。
  3. 動作 功能表中,您可以 重新命名刪除 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"
}

使用 UI 建立 SSH 金鑰

請使用下列步驟來建立新的 SSH 金鑰。 您只能建立 RSH SSH 金鑰類型。 若要使用 Ed25519 SSH 金鑰,必須匯入該 SSH 金鑰。 如需相關資訊,請參閱如需相關資訊,請參閱 使用使用者介面匯入 SSH 金鑰

  1. IBM Cloud控制台中,前往導航選單圖示選單圖示> 基礎架構VPC 圖示> 計算 > SSH 金鑰

  2. 按一下 建立,然後輸入表格 1 中的資訊。| 欄位 | 值 | | --- | --- | |地點 |位置由區域(特定地理區域)和區域(區域內的容錯資料中心)組成。 選擇您要建立 SSH 金鑰的位置。| | 名稱 | SSH 金鑰需要名稱-我知道 | |資源組|選擇 SSH 金鑰的資源組。| | 標籤 | 您可以將使用者標籤指派給 SSH 金鑰,以便您可以輕鬆過濾 SSH 金鑰清單。 如需相關資訊,請參閱 使用標籤-我知道| |存取管理標籤|存取管理標籤可協助您對特定資源套用靈活的存取策略。 如需相關資訊,請參閱 使用標籤控制對資源的存取權 使用者介面指導教學-我知道 | | SSH 金鑰類型 | 預設值為 rsa。您可以使用使用者介面來產生新的 RSA 金鑰組。 可以上傳預先存在的 RSA 和 Ed25519 SSH 金鑰。 只有在作業系統支援此金鑰類型時,才能使用 Ed25519。 Ed25519不能與 Windows 或VMware映像一起使用。|

  3. 選擇為我產生密鑰對

  4. 選擇性地按一下 取得範例 API 呼叫,以取得含有您可以複製的所有 SSH 金鑰資訊的 API 程式碼。

  5. 按一下建立

新的 SSH 金鑰現在會顯示在使用者介面上的 SSH 金鑰清單中。

使用使用者介面匯入 SSH 金鑰

您可以使用兩種方式來匯入 SSH 金鑰。 您可以從本端檔案上傳公開金鑰。 或者,您可以複製公開金鑰資訊並貼到使用者介面中。

請使用下列步驟,從本端檔案匯入 SSH 金鑰。

  1. IBM Cloud控制台中,前往導航選單圖示選單圖示> 基礎架構VPC 圖示> 計算 > SSH 金鑰

  2. 按一下 建立,然後輸入表格 1 中的資訊。| 欄位 | 值 | | --- | --- | |地點 |位置由區域(特定地理區域)和區域(區域內的容錯資料中心)組成。 選擇您要建立 SSH 金鑰的位置。| | 名稱 | SSH 金鑰需要名稱-我知道 | |資源組|選擇 SSH 金鑰的資源組。| | 標籤 | 您可以將使用者標籤指派給 SSH 金鑰,以便您可以輕鬆過濾 SSH 金鑰清單。 如需相關資訊,請參閱 使用標籤-我知道| |存取管理標籤|存取管理標籤可協助您對特定資源套用靈活的存取策略。 如需相關資訊,請參閱 使用標籤控制對資源的存取權 使用者介面指導教學-我知道 | | SSH 金鑰類型 | 選取 SSH 金鑰的金鑰類型。 預設值為 rsa。 只有在作業系統支援此金鑰類型時,才能使用 ed25519 SSH 金鑰類型來建立實例。 此金鑰類型無法與 Windows 或 VMware 映像檔搭配使用-我知道 |

  3. 選擇提供現有公鑰

  4. 點擊上傳公鑰

  5. 選擇公鑰檔案並點擊 “開啟”。 副檔名 .pub 通常會指出哪個檔案包含公開金鑰。

  6. 選擇性地按一下 取得範例 API 呼叫,以取得含有您可以複製的所有 SSH 金鑰資訊的 API 程式碼。

  7. 按一下建立

如果您從終端機複製 SSH 金鑰以將金鑰新增至 VPC,則有時會引入額外換行,導致剖析錯誤。 若要避免此問題,請先將 SSH 金鑰貼到文字編輯器中,並移除任何額外的換行。 然後,從文字編輯器複製 SSH 金鑰,並將它貼至 VPC 使用者介面、CLI 或 API。

您匯入的 SSH 金鑰現在會顯示在使用者介面上的 SSH 金鑰清單中。

使用 CLI 匯入 SSH 金鑰

若要使用 CLI 匯入 SSH 金鑰,請使用 ibmcloud is key-create 指令。 您匯入的檔案是 id_rsa.pubid_ed25519.pub,其中包含您的公開金鑰。 您必須使用 KEY_NAME 變數來指定 SSH 金鑰的名稱或 ID,以及使用 KEY 變數來匯入公開 SSH 金鑰。 使用 --key-type 選項指定 SSH 金鑰類型。 您可以選擇性地在建立 SSH 金鑰時指定資源群組。 使用 RESOURCE_GROUP_IDRESOURCE_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.pubid_ed25519.pub,其中包含您的公開金鑰。 您無法使用 API 來建立全新 SSH 金鑰。 不過,您可以使用使用者介面來建立新的 SSH 金鑰,並從使用者介面產生您需要的 API 程式碼 Snippet,其中包含新的 SSH 金鑰。 如需相關資訊,請參閱 使用使用者介面建立 SSH 金鑰

針對 name 內容,指定 SSH 金鑰的名稱。 對於 public_key 內容,請輸入公開金鑰資訊。 對於 type 內容,請指定 rsaed25519 作為 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 金鑰,請完成下列步驟。

  1. 建立具有必要值的資源區塊類型 ibm_is_ssh_key。 對於 name 屬性,請指定 SSH 金鑰的虛擬名稱。 對於 public_key 屬性,請在虛擬公開金鑰資訊中輸入。

    resource "ibm_is_ssh_key" "example_sshkey" {
      name = "my-key"
      public_key = "public-key"
    }
    
  2. 建立資源之後,請執行下列 Terraform 指令來匯入 SSH 金鑰。

 terraform import ibm_is_ssh_key.example_sshkey d7bec597-4726-451f-8a63-e62e6f19c32c
  1. 請改良配置以符合狀態。 複製資源區塊詳細資料以避免取代資源區塊。

    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。 更新現有金鑰之後,會立即重新命名金鑰。

  1. 更新 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"
    }
    
  2. 執行 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