将OpenSSH ED25519私钥格式转换为PEM格式。

16

我已经使用ED25519生成了一对SSH密钥

ssh-keygen -t ed25519
< p > id_ed25519 文件的输出格式为 OpenSSH 格式:

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

我想将其转换为PEM文件格式。如果它是RSA密钥对,那么不需要这样做,因为RSA id_rsa密钥已经是PEM文件格式,但ED25519密钥对是OpenSSH格式。

我该如何将其转换为PEM文件格式?


1
你找到解决方案了吗? - Sune Kjærgård
1
很遗憾,不行。 - Ferit
没有任何方法适用于我,所以最终我使用OpenSSL从头开始生成:openssl genpkey -algorithm ed25519 -out private.pem && openssl pkey -in private.pem -pubout -out public.pem - DharmaTurtle
3个回答

8

2
“-m pem”选项也可用于生成带有PEM编码的新SSH ed25519密钥;ssh-keygen -a 64 -t ed25519 -m pem -f youykeyname。从手册中可以看到:“在生成或更新支持的私钥类型时设置“ PEM”格式将导致该密钥以传统的PEM私钥格式存储。” - MountainX
8
你检查过这个解决方案是否有效吗?如果是,那么你使用的 ssh-keygen 版本是什么?对我来说,来自 OpenSSH 7.9p1 的版本并没有改变密钥格式,只更改了密码短语。 - Anton Samsonov
@AntonSamsonov 这个解决方案可行,但我不知道版本。默认库来自Ubuntu 20.04。 - Wolfgang Blessen
根据@Gordon Davidson(https://security.stackexchange.com/questions/143114/what-is-the-difference-between-pem-format-to-dsa-rsa-ecc-might-i-confuse-pem-w)的说法,旧软件无法理解新格式,并且某些新类型的内容(如Ed25519密钥)只能存储在新格式中。 - bcbl001
使用通用设置,包括设置文件权限,这将导致“保存密钥"path/to/your/key"失败:权限被拒绝。” - SCBuergel
1
-e选项将输出直接发送到控制台,而不是覆盖密钥文件。 - undefined

0
你还可以使用Puttygen将你的ppk转换为pem。
步骤如下:
1. 将你的ppk私钥导入到Puttygen中 2. 选择RSA作为要生成的密钥类型 3. 选择转换菜单 > 导出OpenSSH密钥 > 保存 4. 使用保存的文件作为你的ssh隧道身份文件

-3
我认为这个会起作用:
openssl pkey -in ed25519.pem -out ed25519.pub -pubout

对于以这种方式生成的私钥,它可以起到作用:

openssl genpkey -algorithm ed25519 > ed25519.pem

我没有明确测试过 ssh-keygen 的私钥格式,但我认为它在内部使用的应该是 OpenSSL。如果私钥的 base64 以"MC"开头,那么我可以说它很可能是兼容的。


5
这并没有回答问题。OP似乎正在寻找将ed25519 SSH密钥转换为PEM格式的方法。大多数SSH密钥默认情况下都是PEM格式,但不包括ed25519 SSH密钥。 - nrdxp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接