从 GnuPG 导出私有 ed25519 密钥以用于 SSH

从 GnuPG 导出私有 ed25519 密钥以用于 SSH

有没有办法从存储在 GnuPG 中的 ed25519 密钥对创建 id_ed25519(不是 id_ed25519.pub)文件?

我已经开始在 GPG 中跟踪我的 SSH 密钥:

sec   rsa3072 2017-12-12 [C]
      DDD8CEFDE281D48CBBF0C56FE2AA8C94C8A7C456
uid           [ultimate] Dave <[email protected]>
ssb   rsa3072 2017-12-12 [S]
ssb   rsa3072 2017-12-12 [E]
ssb   rsa3072 2017-12-12 [A]
ssb   ed25519 2017-12-12 [A]

为了导出我的公钥以供 SSH 使用,我使用了--export-ssh-keyGnuPG 中自 2.1 版以来提供的选项。这适用于 RSA 和 ed25519 密钥。

$ gpg -o id_rsa.pub --export-ssh-key 5D61D0F9!
$ gpg -o id_ed25519.pub --export-ssh-key 0A072B72!

(!强制 GnuPG 使用指定的子密钥而不是第一个可用的身份验证密钥。)

为了导出私有 RSA 密钥,我使用了如下工作流程:

$ gpg --export-secret-subkeys \
--export-options export-reset-subkey-passwd 0A072B72! | \
openpgp2ssh 0A072B72 > id_rsa

这将创建一个 SSH 可以理解的 RSA 私钥,但没有密码。

要重新添加密码,我使用:

$ ssh-keygen -p -f id_rsa

在我的 Windows 工作站上,我使用 PuTTYGen 将密钥转换为 PuTTY 可以理解的内容。

openpgp2ssh由于无法处理ed25519 密钥,因此这与ed25519 密钥不兼容。

据我所知,有些人直接将他们的 GPG 密钥环与 SSH 一起使用,但这对我来说行不通。我需要将私钥分离出来,以便在 Windows 上与 PuTTY 一​​起使用。

相关内容