IBM Cloud Docs
生成 SSH 密钥

生成 SSH 密钥

在创建虚拟服务器之前,您必须具有可用的专用和公用 SSH 密钥对。 可以复用现有的 SSH 密钥对,也可以生成新的 SSH 密钥对。 此外,还可以复用现有的 OpenSSH 密钥对,以在 PuTTY 中使用。

  • 在创建新的虚拟服务器期间,需要将公用密钥作为输入。
  • 登录到虚拟服务器时需要专用密钥。 请在客户机工作站上使此密钥保密。

然后,此 SSH 密钥对将用于在客户机和新服务器之间进行认证。

Hyper Protect Virtual Servers 支持以下密码算法用于生成 SSH 密钥:

  • ssh-rsa(缺省算法)
  • ssh-ed25519
  • ecdsa-sha2-nistp256
  • ecdsa-sha2-nistp384
  • ecdsa-sha2-nistp521

使用命令生成 SSH 密钥

通过所列操作系统的命令行创建 SSH 密钥对的方法,在所有此类操作系统中几乎都相同:

  • Linux
  • 适用于 Linux 的 Windows 子系统 (WSL)
  • 使用 Git Bash 的 Windows
  • Windows 10
  • macOS

如果您需要或希望对 SSH 使用新的认证密钥对,请通过命令行运行 ssh-keygen 工具。 系统会提示您选择密钥文件名和口令,此操作是可选的。

可以在以下任一会话中输入所示的样本指令:

  • Windows 下的 Git Bash 会话
  • Windows 10 会话
  • Linux 会话
ssh-keygen
ssh-keygen -t rsa
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

-t-b-C 参数是可选的。

  • -t 指定密钥类型。 缺省值为 -t rsa
  • -b 指定密钥大小(以位为单位)。 缺省大小为 2048 位。
  • -C 添加注释。

因此,如果调用不使用任何参数的 ssh-keygen,那么该命令会生成一个 RSA 密钥对,其中两个密钥的大小均为 2048 位。

可以使用 -tssh-keygen ** 工具中的 ** 参数从支持的加密算法中进行选择:

表 1. 受支持的密码算法
算法 命令
ssh-rsa ssh-keygen -t rsa (缺省值)
ssh-ed25519 ssh-keygen -t ed25519
ecdsa-sha2-nistp256 ssh-keygen -t ecdsa -b 256
ecdsa-sha2-nistp384 ssh-keygen -t ecdsa -b 384
ecdsa-sha2-nistp521 ssh-keygen -t ecdsa -b 521

如果未指定文件名来保存密钥,将使用缺省名称。 专用和公用 SSH 密钥对存储在两个同名文件中。 创建虚拟服务器所需的公用 SSH 密钥保存在扩展名为 .pub 的文件中。 使用不同的方法或在不同的操作系统上生成密钥时,所生成密钥的格式可能会不同。 在创建虚拟服务器期间将密钥作为输入来输入时,会识别有效的格式。

将 SSH 专用密钥保存到 SSH 代理程序

如果使用口令创建了 SSH 密钥对,那么可以将 SSH 专用密钥添加到 SSH 代理程序。 然后,借助 SSH 代理程序,无需再次输入口令就能使用专用密钥。

此任务是可选的。

  • 运行以下命令: eval "$(ssh-agent -s)"
  • 注:如果您的系统是 macOS Sierra 10.12.2 或更高版本,那么需要修改 ~/.ssh/config 文件,以允许将密钥添加到代理程序,并使用密钥链来存储口令:
Host *    
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  • 输入 ssh-add ~/.ssh/id_rsa(对于 Mac 系统,输入 ssh-add -K ~/.ssh/id_rsa),以将 SSH 专用密钥添加到 SSH 代理程序。 如果专用密钥文件具有不同的名称,请将 id_rsa 替换为相应的文件名。

在 Windows 中使用 PuTTY 密钥生成器生成 SSH 密钥

PuTTY 密钥生成器中,选择密钥类型和密钥大小(例如,2048 或 4096)。

使用 PuTTY 密钥生成器生成 SSH 密钥对{: caption="图 1。 使用 PuTTY Key Generator"caption-side =" bottom "} 生成 SSH 密钥对

PuTTY 密钥生成器中,通过单击 要生成的密钥类型的相应选项,可以选择其中一种支持的加密算法。 对于 ECDSA 选项,将显示一个下拉选项,在其中必须另外选择 要用于生成此密钥的曲线nistp256nistp384nistp521)。

然后,必须通过按相应的按钮( 保存公用密钥保存专用密钥),将专用密钥和(可选)公用密钥保存为单独的文件。 要在创建虚拟服务器时复用以这种方式保存的公用密钥,请确保使用 Hyper Protect Virtual Servers 可以识别的 OpenSSH 公用密钥格式。

必须将密钥存储在安全的位置,并备份密钥。 虚拟服务器升级方案需要使用用于创建虚拟服务器的原始密钥进行签名。

要使用 PuTTY 公用 SSH 密钥创建虚拟服务器,有以下选项可供选择:

  • 要在生成密钥对之后直接创建虚拟服务器,请复制 密钥框中的公用密钥。 请包含开头的字符串“ssh-rsa”,但删除末尾的密钥注释,如图 2 所示。
  • 要在 PuTTY 密钥生成器对话框已关闭后创建虚拟服务器,可以使用已保存文件中 OpenSSH 公用密钥格式的公用密钥。

来自 PuTTY Key Generator 的 SSH 密钥对可供使用{: caption="图 2。 来自 PuTTY Key Generator 的 SSH 密钥对可供使用 "caption-side =" bottom "}

转换 OpenSSH 密钥对,以用于从 PuTTY 登录到虚拟服务器

假设您有现有的虚拟服务器,并且希望在 PuTTY 配置实用程序中配置此虚拟服务器,以便能便捷地登录到此服务器。 您是使用现有 OpenSSH 密钥对创建的此虚拟服务器。 此场景描述了如何转换现有 OpenSSH 专用密钥,以用于通过 PuTTY 配置轻松登录到此虚拟服务器。 为此,您需要了解如何将相关的 OpenSSH 专用密钥转换为 PuTTY 格式。

  1. 转换中选择 导入密钥。 浏览以查找现有 OpenSSH 专用密钥文件并将其打开。

    将 OpenSSH 专用密钥导入到 PuTTY{: caption="图 3。 将 OpenSSH 专用密钥导入到 PuTTY"caption-side =" bottom "}

  2. 使用文件类型 ** 保存 **PuTTY.ppk 格式的专用密钥。

    将 OpenSSH 专用密钥转换为 PuTTY{: caption="图 4。 将 OpenSSH 专用密钥转换为 PuTTY"caption-side =" bottom "}

  3. PuTTY 中配置虚拟服务器,如在 Windows 中使用 PuTTY 配置登录中所述。