管理 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
您可以使用 UI 生成新的 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 CloudCLI for VPC。
操作 | 命令 | 后续操作 |
---|---|---|
创建 SSH 密钥。 | ibmcloud is key-create |
创建 SSH 密钥后,会将其添加到密钥列表中。 |
查看密钥详细信息。 | ibmcloud is key |
可以查看密钥的名称和密钥的标识。 |
列出密钥。 | 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 以获取更多信息。
使用 UI 列出所有 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 {}
使用 UI 查看 SSH 密钥的详细信息
您可以查看 SSH 密钥的以下详细信息。
- 名称
- 资源组
- 指纹
- Type
- 长度
- 创建日期(本地)
要查看 SSH 密钥的详细信息,请完成以下步骤。
- 在 IBM Cloud 控制台,转到 导航菜单 图标
> 基础设施
> 计算 > SSH 密钥。
- 在“VPC 的 SSH 密钥”页面上,将显示所有现有 SSH 密钥的列表。
- 从 操作 菜单中,可以 重命名 或 删除 SSH 密钥。
使用 CLI 查看 SSH 密钥的详细信息
您可以使用 ibmcloud is key 命令来查看密钥的名称和密钥标识。 使用 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 密钥。 有关更多信息,请参阅 使用 UI 导入 SSH 密钥。
-
在 IBM Cloud 控制台,转到 导航菜单 图标
> 基础设施
> 计算 > SSH 密钥。
-
单击 创建 并输入表 1 中的信息。| 字段 | 值 | | --- | --- | | 位置位置由区域(特定地理区域)和区域(区域内的容错数据中心)组成。 选择创建 SSH 密钥的位置。| | 名称 | 您的 SSH 密钥需要名称我不知道 | | 资源组 | 为 SSH 密钥选择一个资源组。| | 标记 | 您可以将用户标记分配给 SSH 密钥,以便可以轻松地过滤 SSH 密钥列表。 有关更多信息,请参阅 使用标记 我不知道| | 访问管理标签 | 访问管理标签可帮助您在特定资源上应用灵活的访问策略。 有关更多信息,请参阅 使用标记控制对资源的访问 UI 教程我不知道 | | SSH 密钥类型 | 缺省值为
rsa
。您可以使用 UI 生成新的 RSA 密钥对。 可以上载预先存在的 RSA 和 Ed25519 SSH 密钥。 仅当操作系统支持此密钥类型时,才能使用 Ed25519。 Ed25519不能与 Windows 或VMware映像一起使用。| -
选择“为我生成密钥对”。
-
(可选) 单击 获取样本 API 调用 以获取包含可复制的所有 SSH 密钥信息的 API 代码。
-
单击创建。
现在,新的 SSH 密钥将显示在 UI 上的 SSH 密钥列表中。
使用 UI 导入 SSH 密钥
您可以通过两种方式导入 SSH 密钥。 您可以从本地文件上载公用密钥。 或者,可以将公用密钥信息复制并粘贴到 UI 中。
使用以下步骤从本地文件导入 SSH 密钥。
-
在 IBM Cloud 控制台,转到 导航菜单 图标
> 基础设施
> 计算 > SSH 密钥。
-
单击 创建 并输入表 1 中的信息。| 字段 | 值 | | --- | --- | | 位置位置由区域(特定地理区域)和区域(区域内的容错数据中心)组成。 选择创建 SSH 密钥的位置。| | 名称 | 您的 SSH 密钥需要名称我不知道 | | 资源组 | 为 SSH 密钥选择一个资源组。| | 标记 | 您可以将用户标记分配给 SSH 密钥,以便可以轻松地过滤 SSH 密钥列表。 有关更多信息,请参阅 使用标记 我不知道| | 访问管理标签 | 访问管理标签可帮助您在特定资源上应用灵活的访问策略。 有关更多信息,请参阅 使用标记控制对资源的访问 UI 教程我不知道 | | SSH 密钥类型 | 选择 SSH 密钥的密钥类型。 默认值为
rsa
。 仅当操作系统支持此密钥类型时,才能使用ed25519
SSH 密钥类型来创建实例。 此密钥类型不能与 Windows 或 VMware 映像配合使用我不知道 | -
选择“提供现有公钥”。
-
单击上传公钥。
-
选择公钥文件并单击“打开”。 文件扩展名
.pub
通常指示包含公用密钥的文件。 -
(可选) 单击 获取样本 API 调用 以获取包含可复制的所有 SSH 密钥信息的 API 代码。
-
单击创建。
如果从终端复制 SSH 密钥以将密钥添加到 VPC,那么有时会引入额外的换行符,这将导致解析错误。 要避免此问题,请首先将 SSH 密钥粘贴到文本编辑器中,并除去任何额外的换行符。 然后,从文本编辑器复制 SSH 密钥,并将其粘贴到 VPC UI,CLI 或 API 中。
导入的 SSH 密钥现在显示在 UI 上的 SSH 密钥列表中。
使用 CLI 导入 SSH 密钥
要使用 CLI 导入 SSH 密钥,请使用 ibmcloud is key-create 命令。 导入的文件为 id_rsa.pub
或 id_ed25519.pub
,其中包含公用密钥。 必须使用 KEY_NAME
变量指定 SSH 密钥的名称或标识,并使用 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 密钥。 但是,您可以使用 UI 创建新的 SSH 密钥,并从 UI 生成包含新 SSH 密钥的所需 API 代码片段。 有关更多信息,请参阅 使用 UI 创建 SSH 密钥。
对于 name
属性,请指定 SSH 密钥的名称。 对于 public_key
属性,输入公用密钥信息。 对于 type
属性,请为 SSH 密钥类型指定 rsa
或 ed25519
。
仅当操作系统支持此密钥类型时,才能使用 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