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

66 ssh-keygen private-key public-key amazon-ec2

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

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

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

fue*_*ero 77

根据这个,这个命令可以使用:

ssh-keygen -f id_rsa -e -m pem
Run Code Online (Sandbox Code Playgroud)

这会将转换的公共密钥到OpenSSL的兼容格式。您的私钥已经是 PEM 格式,可以按原样使用(正如 Michael Hampton 所说)。

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

  • 与文档相反,它将以 PEM 格式输出公钥,而不是私钥。目前 ssh-keygen 不支持转换私钥。 (5认同)
  • 但他们不需要公钥,不是吗?他们需要私钥才能从 AWS 控制台解密其密码 (3认同)
  • `id_rsa` 包含密钥**对**,而不仅仅是私钥。 (2认同)

Mat*_*att 41

使用ssh-keygen出口在为我工作的.PEM格式的关键。

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pem
Run Code Online (Sandbox Code Playgroud)

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

以供参考:

  • -f id_rsa.pub部分表示要读取的输入文件
  • -m 'PEM 表示 PEM 文件类型
  • -e选项表示将导出输出


Mik*_*Dev 11

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

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair
Run Code Online (Sandbox Code Playgroud)

以下是每个参数的信息:

  • -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


小智 8

id_rsa 是您必须用来解密 Windows EC2 实例密码的文件,但只需确保您复制粘贴的文件不受短语保护。

我解决了获得临时不受保护的id_rsa文件的问题,例如:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
Run Code Online (Sandbox Code Playgroud)