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


33

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

我将公钥导入了我的AWS EC2帐户。

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


2
私钥已经是PEM格式,可以按原样使用。
迈克尔·汉普顿

@MichaelHampton,这将取决于ssh-keygen的版本以及用于生成密钥对的命令。某些版本默认情况下使用RFC4716代替PEM。
奥斯丁2015年

Answers:


44

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

ssh-keygen -f id_rsa -e -m pem

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

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


但是他们不需要公钥吗?他们需要私钥来从AWS控制台解密密码
Michael Bailey 2015年

我不知道OP需要做什么。
fuero

不确定您对AWS的熟悉程度如何,但是在启动Windows实例(基本上是服务器)时,AWS会保留您的密码,直到为您提供私钥。然后,他们为您提供服务器密码。这样,AWS上的Windows和Linux服务器都依赖于私钥。
Michael Bailey 2015年

1
这在OS X(ssh -v ==> OpenSSH_6.2p2)上
不起作用

3
与文档相反,它将以PEM格式而不是私有密钥输出PUBLIC密钥。当前ssh-keygen不支持转换私钥。
morgwai

21

使用ssh-keygen以.pem格式导出密钥对我有用。

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

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

以供参考:

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

5

id_rsa 是用于解密Windows EC2实例密码的文件,但是只需确保复制的文件没有短语保护。

我解决了使用以下方法获取临时不受保护的id_rsa文件的问题:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

2

最初,当使用时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实例连接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


Mike选择不包括'-b'选项的文档。也许对某些人显而易见,这意味着“请进行4096位加密”。如链接的AWS文档中所述:“支持的长度为1024、2048和4096。如果在使用EC2实例连接API时使用SSH连接,则支持的长度为2048和4096。”
nclark

@nclard,不知道为什么我省略了-b参数。刚刚添加。
Mike Barlow-BarDev

0

启动EC2实例时,您为其分配了一个密钥对(或没有密钥对)。此后无法更改。

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

创建密钥对时,将下载.pem文件。您无法再得到它。如果您丢失了它,那么您就不走运了。

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

简而言之,如果您没有原始的.pem文件,则无法获取密码。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.