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

Fer*_*rit 18 openssh pem ed25519 private-key

我使用以下命令生成了 ED25519 SSH 密钥对

ssh-keygen -t ed25519
Run Code Online (Sandbox Code Playgroud)

文件的输出id_ed25519采用 OpenSSH 格式:

-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

我想将其转换为 PEM 文件格式。如果它是 RSA 密钥对,则无需这样做,因为 RSAid_rsa密钥已经采用 PEM 文件格式,但 ED25519 密钥对是 OpenSSH 格式。

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

Wol*_*sen 8

使用

ssh-keygen -p -f path/to/your/key -m pem 
Run Code Online (Sandbox Code Playgroud)

将密钥文件转换为 PEM,但请务必先备份该文件。

摘自https://github.com/pickware/github-action-ssh-agent

  • 您检查过这个解决方案是否确实有效吗?如果是,那么您使用的是哪个版本的“ssh-keygen”?对我来说,OpenSSH 7.9p1 的版本没有改变密钥格式,只是改变了密码。 (10认同)
  • `-m pem` 选项还可以使用 PEM 编码生成新的 SSH ed25519 密钥;`ssh-keygen -a 64 -t ed25519 -m pem -f youykeyname`。从手册页来看:“在生成或更新受支持的私钥类型时设置“PEM”格式将导致密钥以旧版 PEM 私钥格式存储。” (2认同)

Zig*_*ter -3

我认为这会起作用:

openssl pkey -in ed25519.pem -out ed25519.pub -pubout
Run Code Online (Sandbox Code Playgroud)

它适用于以这种方式生成的私钥:

openssl genpkey -algorithm ed25519 > ed25519.pem
Run Code Online (Sandbox Code Playgroud)

我还没有明确测试 ssh-keygen 的私钥格式,但我假设它在幕后使用 OpenSSL。如果私钥的base64以“MC”开头,那么我会说它可能是兼容的。

  • 这并不能回答问题。OP 似乎正在寻找一种将 ed25519 ssh 密钥转换为 pem 格式的方法。默认情况下,大多数 ssh 密钥是 PEM iirc,但不是 ed25519 ssh 密钥。 (5认同)