无需安装其他软件即可从 GPG 导出私有 SSH 密钥

无需安装其他软件即可从 GPG 导出私有 SSH 密钥

我使用 4096 字节 RSA PGP 密钥;由于 SSH 也使用 RSA 标准,是否有可能将 PGP 密钥用作 SSH 密钥,而无需在服务器上安装其他软件(并且尽可能少地在客户端上安装)?

答案1

有几种方法,可能有效也可能无效:

  • 猴子球
  • openssh-gpg,OpenSSH 的补丁
  • SSH.com 有内置支持
  • gpg2Debian 自带了gpgkey2ssh工具,并且gpg-agent也可以充当 ssh 代理,但我不知道如何真正让 ssh 使用密钥进行身份验证。

答案2

SSH2 版本 2.0.13 引入了对 PGP 身份验证的支持。

摘自 SSH 安全外壳

答案3

通过此问题的答案中的信息以及 gnupg-users 邮件列表的帮助,我能够弄清楚如何使用我的 GPG 密钥进行 SSH 身份验证。有几种可能的方法可以做到这一点。

我写了一篇博客文章,介绍一些可能的解决方案:http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key

总结一下:要么使用 GnuPG 2.1,目前处于测试阶段。使用此版本时,您只需使用 --enable-ssh-support 选项启动 gpg-agent,然后将 GPG 密钥(或子密钥)的 keygrip 添加到 ~/.gnupg/sshcontrol 中。

当您使用当前稳定的 GnuPG 版本(2.0.x)时,您可以使用 monkeysphere 将您的密钥添加到 gpg-agent(再次,在使用 --enable-ssh-support 选项启动 gpg-agent 之后)。

还可以借助 monkeysphere 使用 GNOME 密钥环(甚至是常规 ssh 代理)。在这种情况下,唯一的问题是,您必须在再次登录(进入 Gnome 或 XFCE)时重新添加密钥。要解决这个问题,您可以手动导出密钥并进行转换。

答案4

无需安装其他软件即可从 GPG 导出私有 SSH 密钥

找到所需私钥的 keygrip

gpg --list-secret-keys --with-keygrip

将其导入到新的临时 gpgsm 密钥环中

gpgsm --gen-key -o /tmp/keyring

2#选择现有的键

按键手柄 ID

3#密钥目的加密,这可能不相关

C=虚拟、ST=虚拟、L=虚拟、O=虚拟、OU=虚拟、CN=虚拟#输入虚拟 X.509 主题名称

[电子邮件保护] #email 也是如此

其余选项都是可选的,因此只需按 Enter 键,确认信息,然后输入所选密钥的解密密码。

将密钥转换为pkcs12格式

gpgsm -o /tmp/key.p12 --export-secret-key-p12 '&keygrip_id'

再次输入之前输入的加密密码进行解密。然后输入新密码,该密码用于保护 .p12 文件。如果您的 /tmp 文件夹像我的一样位于 RAM 中,您可以将其留空,因为重启后它将被安全擦除。

将其转换为 ssh 友好格式

此外,它需要删除输出的前 4 行,以便它以 ---BEGIN PRIVATE KEY--- 开头

openssl pkcs12 -in /tmp/key.p12 -nodes -nocerts | tail -n +5 > /tmp/sshkey
chmod 600 /tmp/sshkey

现在,您的 sshkey 已准备好供 ssh 客户端使用。希望这能有所帮助,对我来说,这是必要的,因为我无法安装 monkeysphere。

相关内容