IBM Cloud Docs
SSH 密钥入门

SSH 密钥入门

创建服务器时,必须选择现有 SSH 密钥或生成 SSH 密钥。 服务器使用 SSH 密钥通过公用密钥加密系统来识别用户或设备。 SSH 密钥由字母和数字组合而成,对于分配给它的用户或设备来说是独一无二的。 您可以在控制台中创建 SSH 密钥。 您可以使用IBM Cloud®控制台、CLI 和 API 添加、编辑或删除 SSH 密钥。 通过向服务器添加 SSH 密钥,您可以使用相应的专用 SSH 密钥 (而不是密码) 来访问服务器。 只有在初始创建服务器时,才能为服务器添加 SSH 密钥。 创建Linux®服务器后,可以直接在服务器的 ~/.ssh/ 目录中编辑密钥。

不支持使用用于连接的密码选项创建服务器。 在供应服务器并使用专用密钥连接到服务器时,必须指定 SSH 密钥。

支持的 SSH 密钥类型:用户界面中的 RSA 和 ED25519 密钥

IBM Cloud® Virtual Private Cloud 支持两种不同类型的公用 SSH 密钥。

  • RSA
  • ED25519

在 IBM Cloud VPC上,RSA 是缺省 SSH 密钥类型。 您可以选择将密钥类型更改为 ED25519。 ED25519SSH密钥类型的性能优势略高,因为它能以较小的密钥提供与 RSA SSH 密钥类型相同的安全级别。 您可以混合使用 RSA 和 ED25519 SSH 密钥创建虚拟服务器实例和裸机服务器。

IBM Cloud 控制台中,您可以进入 Navigation menu 图标menu 图标 > Infrastructure VPC 图标 > Compute > SSH keys 管理您的 SSH 密钥。 您可以从此处创建,重命名或删除密钥。 如果选择创建密钥,那么该密钥必须是 RSA SSH 密钥类型。 您可以上传 ED25519 SSH 密钥类型,但不能在 VPC 中生成。

您可以在控制台中生成 RSA 密钥对。 可以上传预先存在的 RSA 和 ED25519 SSH 密钥。 仅当操作系统支持此密钥类型时,才能使用 Ed25519。 Ed25519 不能与 Windows 或 VMware 映像配合使用。

您可以在控制台中生成 RSA 密钥对。 可以上传预先存在的 RSA 和 ED25519 SSH 密钥。

SSH 密钥类型:CLI 中的 RSA 和 ED25519

IBM Cloud® Virtual Private Cloud 支持两种不同类型的公用 SSH 密钥。

  • RSA
  • ED25519

在 IBM Cloud VPC上,RSA 是缺省 SSH 密钥类型。 您可以选择将密钥类型更改为 ED25519。 ED25519SSH密钥类型的性能优势略高,因为它能以较小的密钥提供与 RSA SSH 密钥类型相同的安全级别。 您可以混合使用 RSA 和 ED25519 SSH 密钥创建虚拟服务器实例和裸机服务器。

  • 对于 Windows 或 VMware 映像,必须使用 RSA SSH 密钥类型。 ED25519 SSH 密钥类型不能与 Windows 或 VMware 映像一起使用。
  • 对于 Linux 映像,ED25519 SSH 密钥类型只有在操作系统的 SSH 服务器支持该密钥类型时才能使用。

在 CLI 中,可以使用 --key-type 选项来指定密钥的类型。 无法在 CLI 中创建 SSH 密钥,只能导入现有 SSH 密钥。 缺省 --key-type 是 RSA。 如果您尝试导入 ED25519 SSH 密钥,但未指定 ed25519 密钥类型,则过程会失败。

--key-type ed25519

SSH 密钥类型:应用程序接口中的 RSA 和 ED25519

IBM Cloud® Virtual Private Cloud 支持两种不同类型的公用 SSH 密钥。

  • RSA
  • ED25519

在 IBM Cloud VPC上,RSA 是缺省 SSH 密钥类型。 您可以选择将密钥类型更改为 ED25519。 ED25519SSH密钥类型的性能优势略高,因为它能以较小的密钥提供与 RSA SSH 密钥类型相同的安全级别。 您可以混合使用 RSA 和 ED25519 SSH 密钥创建虚拟服务器实例和裸机服务器。

  • 对于 Windows 或 VMware 映像,必须使用 RSA SSH 密钥类型。 ED25519 SSH 密钥类型不能与 Windows 或 VMware 映像一起使用。
  • 对于 Linux 映像,ED25519 SSH 密钥类型只有在操作系统的 SSH 服务器支持该密钥类型时才能使用。

无法在 API 中创建 SSH 密钥,只能导入现有 SSH 密钥。 您可以在 UI 中生成新的 RSA SSH 密钥对。 当您创建 SSH 密钥以复制该密钥的 API 代码片段时,可以选择此选项。

在 API 中,可以使用 type 变量指定密钥的类型。 缺省 type 是 RSA。 如果您尝试导入 ED25519 SSH 密钥,但未指定 ed25519 密钥类型,则过程会失败。

"type":"ed25519"

SSH 密钥类型:Terraform 中的 RSA 和 ED25519

IBM Cloud® Virtual Private Cloud 支持两种不同类型的公用 SSH 密钥。

  • RSA
  • ED25519

在 IBM Cloud VPC上,RSA 是缺省 SSH 密钥类型。 您可以选择将密钥类型更改为 ED25519。 ED25519SSH密钥类型的性能优势略高,因为它能以较小的密钥提供与 RSA SSH 密钥类型相同的安全级别。 您可以混合使用 RSA 和 ED25519 SSH 密钥创建虚拟服务器实例和裸机服务器。

  • 对于 Windows 或 VMware 映像,必须使用 RSA SSH 密钥类型。 ED25519 SSH 密钥类型不能与 Windows 或 VMware 映像一起使用。
  • 对于 Linux 映像,ED25519 SSH 密钥类型只有在操作系统的 SSH 服务器支持该密钥类型时才能使用。

无法在 Terraform 中创建 SSH 密钥,只能导入现有 SSH 密钥。 您可以在 UI 中生成新的 RSA SSH 密钥对。

在 Terraform 中,可以使用 type 变量指定键的类型。 默认类型为 rsa。 如果尝试导入 ED25519 SSH 密钥,但未指定 ed25519 密钥类型,该过程将失败。

type = "ed25519"

准备工作

VPC 的 SSH 密钥 页面上创建 SSH 密钥时,可以在 IBM Cloud® Virtual Private Cloud 中生成 SSH 密钥。 但是,如果选择导入现有 SSH 密钥文件,请记住以下限制。

  • 您的 SSH 密钥必须是 RSA 或 ED25519 密钥类型,密钥大小为 2048 位或 4096 位。
  • 如果 Mac 系统生成的密钥大小为 3072 位 (缺省情况下),请运行下列其中一个命令以确保生成的密钥是受支持的大小。
    • 对于 RSA SSH 密钥类型,请发出: ssh-keygen -t rsa -b 4096 -C "user_ID"
    • 对于 ED25519 SSH 密钥类型,请发出:ssh-keygen -t ed25519 -b 4096 -C "user_ID"
  • SSH 密钥作为密钥对生成; 一个是公用密钥,另一个是专用密钥。 将 SSH 密钥导入到 VPC 时,请选择公用密钥。 相应的专用密钥将保留在本地工作站上,并且不会导入。
  • 从终端复制 SSH 密钥以将公用密钥添加到 VPC 时,有时会引入额外的换行符,这会导致解析错误。 要避免此问题,请首先将公用密钥粘贴到文本编辑器中,并除去任何额外的换行符。 然后,从文本编辑器复制公用密钥,并将其粘贴到 IBM Cloud VPC UI,CLI 或 API 中。

查找现有 SSH 密钥

如果选择导入现有 SSH 密钥文件,请查找包含公用密钥的名为 id_rsa.pubid_ed25519.pub 的文件。 该文件可能位于主目录下的 .ssh 目录中,例如 /Users/<USERNAME>/.ssh/id_rsa.pub。 RSA SSH 密钥的公钥文件内容通常以 ssh-rsa 开头,而 ED25519 SSH 密钥的公钥文件内容通常以 ssh-ed25519 开头。 文件扩展名 .pub,表示哪个文件包含公钥。

生成外部 SSH 密钥

如果要在 IBM Cloud VPC外部生成 SSH 密钥,请运行 ssh-keygen 命令并遵循提示。 例如,您可以在Linux或 Mac 系统上运行命令 ssh-keygen -t rsa -C "user_ID" 生成 RSA SSH 密钥。

Enter 键以接受文件的缺省位置。 该命令会生成两个文件。 生成的公钥在 <your key>.pub 文件中。 对于 Windows®,可以使用 PuTTYgen生成 SSH 密钥。

如果要使用 OpenSSH V 7.8 或更高版本并计划访问 Windows 服务器,请使用以下命令生成 PEM 格式的密钥。ssh-keygen -m PEM -t rsa -C "user_ID"

在控制台中查找现有 SSH 密钥

  1. IBM Cloud 控制台,转到 导航菜单 图标菜单图标 > 基础设施 VPC 图标 > 计算 > SSH 密钥
  2. 将显示任何现有 SSH 密钥。

通过 CLI 列出现有 SSH 密钥

要使用 CLI 查看所有 SSH 密钥的列表,请使用 ibmcloud is keys 命令。 指定 RESOURCE_GROUP_IDRESOURCE_GROUP_NAME 变量。 如果要列出所有资源组,请指定 --all-resource-groups

ibmcloud is keys [--all-resource-groups]

有关详细信息,请参阅 VPC CLI 参考中的 ibmcloud is keys

使用 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 密钥。 只能创建 RSA SSH 密钥。 对于 ED25519 SSH 密钥,必须上传 SSH 密钥。

  1. IBM Cloud 控制台,转到 导航菜单 图标菜单图标 > 基础设施 VPC 图标 > 计算 > SSH 密钥

  2. 单击 Create 并输入表 1 中的信息。

    为 VPC 选择创建 SSH 密钥
    字段
    地区 位置由区域(特定地理区域)和区域(区域内的容错数据中心)组成。 选择创建 SSH 密钥的位置。
    名称 SSH 密钥需要一个名称。
    资源组 为 SSH 密钥选择一个资源组。
    标记 您可以为 SSH 密钥指定一个用户标签,这样就可以轻松筛选 SSH 密钥列表。 有关更多信息,请参阅使用标记
    访问权管理标记 访问权管理标记有助于在特定资源上应用灵活的访问策略。 有关详细信息,请参阅 使用标记控制对资源的访问 UI 教程。
    SSH 密钥类型 默认值为 rsa。 您可以在用户界面上生成新的 RSA 密钥对。 可以上传预先存在的 RSA 和 ED25519 SSH 密钥。 仅当操作系统支持此密钥类型时,才能使用 Ed25519。 Ed25519 不能与 Windows 或 VMware 映像配合使用。
  3. 选择“为我生成密钥对”。

  4. (可选) 单击 获取样本 API 调用 以获取包含可复制的所有 SSH 密钥信息的 API 代码。

  5. 单击创建

现在,您的 SSH 密钥将显示在 UI 上的 SSH 密钥列表中。

在控制台中导入 SSH 密钥

您可以通过两种方式导入 SSH 密钥。 您可以从本地文件上载公用密钥。 或者,可以将公用密钥粘贴到 UI 中。

使用以下步骤从本地文件导入 SSH 密钥。

  1. IBM Cloud 控制台,转到 导航菜单 图标菜单图标 > 基础设施 VPC 图标 > 计算 > SSH 密钥

  2. 单击 创建 并输入表 1 中的信息。

    为 VPC 选择创建 SSH 密钥
    字段
    位置位置由区域(特定地理区域)和区域(区域内的容错数据中心)组成。 选择创建 SSH 密钥的位置。
    名称 SSH 密钥需要名称。
    资源组 为 SSH 密钥选择一个资源组。
    标记 您可以将用户标记分配给 SSH 密钥,以便可以轻松地过滤 SSH 密钥列表。 有关更多信息,请参阅 使用标记
    访问管理标签 访问管理标签可帮助您在特定资源上应用灵活的访问策略。 有关更多信息,请参阅 使用标记控制对资源的访问 UI 教程。
  3. 选择“提供现有公钥”。

  4. 单击上传公钥

  5. 选择公钥文件并单击“打开”。 文件扩展名 .pub 通常指示包含公用密钥的文件。

  6. (可选) 单击 获取样本 API 调用 以获取包含可复制的所有 SSH 密钥信息的 API 代码。

  7. 单击创建

使用以下步骤将公用密钥资料粘贴到 UI 中,以导入 SSH 密钥。

如果从终端复制 SSH 密钥以将密钥添加到 VPC,那么有时会引入额外的换行符,这将导致解析错误。 要避免此问题,请首先将 SSH 密钥粘贴到文本编辑器中,并除去任何额外的换行符。 然后,从文本编辑器复制 SSH 密钥,并将其粘贴到 VPC UI,CLI 或 API 中。

导入的 SSH 密钥现在显示在 UI 上的 SSH 密钥列表中。

使用 CLI 导入 SSH 密钥

要使用 CLI 导入 SSH 密钥,请使用 ibmcloud is key-create 命令。 您还必须指定 KEY_NAMEKEY。 SSH 密钥文件是 id_rsa.pubid_ed25519.pub,具体取决于要导入的密钥类型。 (可选) 可以使用 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]

使用 API 导入 SSH 密钥

要使用 API 导入 SSH 密钥,请使用 创建密钥。 无法使用 API 创建 SSH 密钥。 不过,您可以在控制台中创建 SSH 密钥,然后从用户界面生成包含新 SSH 密钥的所需 API 代码片段。 如果使用 UI,请确保先保存在 UI 中创建的 SSH 密钥,然后再生成 API 代码片段。

对于 name 属性,请指定 SSH 密钥的名称。 对于 public_key 属性,输入公用密钥信息。 对于 type 属性,请为 SSH 密钥类型指定 rsaed25519

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 密钥

创建 ssh-key 资源或通过引用 ssh-key 数据源来使用现有 ssh-key。 有关更多信息,请参阅 ibm_is_ssh_keys 上的 Terraform 文档

创建 ssh-key 资源或通过引用 ssh-key 数据源来使用现有 ssh-key。 对于 name 属性,请指定 SSH 密钥的名称。 对于 public_key 属性,输入公用密钥信息。 对于 type 属性,请为 SSH 密钥类型指定 rsaed25519。 默认值为 rsa。 必须指定 ed25519 才能导入 ed25519 SSH 密钥。

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"
}

后续步骤

在找到或生成 SSH 密钥后,现在是规划和创建服务器的时候了。

虚拟服务器

Bare metal servers

对 SSH 密钥进行故障诊断