我使用 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。