如何从 ssh 密钥对中获取 .pem 文件?

如何从 ssh 密钥对中获取 .pem 文件?

我使用 ssh-keygen 创建了一个密钥对,并获得了两个经典的 id_rsa 和 id_rsa.pub。

我将公钥导入我的 AWS EC2 账户。

现在我创建了一个 Windows 实例,为了解密该实例密码,AWS 控制台要求我提供一个 .pem 文件。如何从我的两个 id_rsa 和 id_rsa.pub 文件中获取该 .pem 文件?

答案1

根据,可以使用该命令:

ssh-keygen -f id_rsa -e -m pem

这将转换您的民众密钥转换为 OpenSSL 兼容格式。您的私人的密钥已经是 PEM 格式,可以按原样使用(正如 Michael Hampton 所述)。

仔细检查 AWS 是否未要求 (X.509)证书采用 PEM 格式,这与您的 SSH 密钥不同。

答案2

使用ssh-keygen.pem 格式导出密钥对我来说很有效。

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pub.pem

.pem然后根据需要简单地复制密钥。

选项如下:(参见man ssh-keygen

  • -f id_rsa.pub: 输入文件
  • -m 'PEM':输出格式 PEM
  • -e:输出到 STDOUT

答案3

最初,使用时ssh-keygen,我可以生成与 AWS EC2 兼容的公钥,但在创建兼容的私钥时遇到问题。以下内容创建与 AWS EC2 兼容的公钥和私钥对。

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

以下是每个参数的信息:

  • -P:用于密码。故意设置为空。
  • -t:指定要创建的密钥类型。AWS EC2 密钥对需要 RSA。根据我的经验,这与创建的公钥有关。
  • -b:指定密钥的位数。支持的长度为 1024、2048 和 4096。如果您在使用 EC2 Instance Connect API 时使用 SSH 连接,则支持的长度为 2048 和 4096。
  • -m:指定密钥生成的密钥格式。在生成受支持的私钥类型时设置“PEM”格式将导致密钥以旧版 PEM 私钥格式存储。AWS EC2 密钥对需要旧版格式
  • -f:指定密钥文件的输出文件名

资源:

有关 ssh-keygen 的更多信息,请参见: https://man.openbsd.org/ssh-keygen.1

AWS - EC2 密钥对 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

答案4

启动 EC2 实例时,您会为其分配一个密钥对(或不分配)。之后无法更改。

只有使用该密钥对中的 .pem 文件,您才能够解密 Windows 密码。

.pem 文件会在创建密钥对时下载。您无法再次获取它。如果您丢失了它,那您就倒霉了。

除非您在启动实例之前将该密钥导入 AWS 并将其分配给实例,否则您不能使用自己生成的 .pem 文件。

简单来说,如果你没有原始的.pem文件,你就无法获取密码。

编辑:重新阅读问题后,我意识到 OP 已将他的密钥导入 AWS。

相关内容