user18725 Asked: 2009-08-29 08:07:29 +0800 CST2009-08-29 08:07:29 +0800 CST 2009-08-29 08:07:29 +0800 CST 为 SSH 使用 PGP 密钥 772 我使用 4096 字节的 RSA PGP 密钥;由于 SSH 也使用 RSA 标准,是否完全可以将 PGP 密钥用作 SSH 密钥,而无需在服务器上安装额外的软件(并且在客户端上尽可能少地安装)? ssh rsa gpg pgp 5 个回答 Voted user1686 2009-08-30T04:09:25+08:002009-08-30T04:09:25+08:00 有几种方法,可能有效,也可能无效: MonkeySphere openssh-gpg,OpenSSH 的补丁 SSH.com 有内置支持 gpg2在 Debian 上带有一个gpgkey2ssh工具,也gpg-agent可以充当 ssh 代理,但我不知道如何让 ssh 使用密钥进行身份验证。 joe 2009-08-29T22:38:00+08:002009-08-29T22:38:00+08:00 SSH2 版本 2.0.13 引入了对 PGP 身份验证的支持。 摘自 SSH 安全外壳 jeroen 2012-08-03T02:38:11+08:002012-08-03T02:38:11+08:00 借助有关此问题的答案的信息以及 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-agent)。在这种情况下,唯一的问题是您必须在再次登录时重新添加您的密钥(进入 Gnome 或 XFCE)。要解决此问题,您可以手动导出密钥并进行转换。 koenigdmj 2009-08-29T09:16:29+08:002009-08-29T09:16:29+08:00 本文档展示了如何在 SSH.com 客户端上执行此操作;我不确定它是否适用于 OpenSSH,但可能值得一试。 Jakub M. 2020-05-27T08:12:02+08:002020-05-27T08:12:02+08:00 从 GPG 导出私有 SSH 密钥,无需额外安装软件 找到所需私钥的钥匙扣 gpg --list-secret-keys --with-keygrip 将其导入新的临时 gpgsm 密钥环 gpgsm --gen-key -o /tmp/keyring 2 #选择现有密钥 keygrip_id 3 #key目的加密,这可能无关紧要 C=dummy, ST=dummy, L=dummy, O=dummy, OU=dummy, CN=dummy #输入dummy X.509主题名 不存在@dummy.com #email 以及 其余选项是可选的,因此只需输入它们,确认信息,然后输入所选密钥的解密密码。 将密钥转换为 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。
有几种方法,可能有效,也可能无效:
gpg2
在 Debian 上带有一个gpgkey2ssh
工具,也gpg-agent
可以充当 ssh 代理,但我不知道如何让 ssh 使用密钥进行身份验证。SSH2 版本 2.0.13 引入了对 PGP 身份验证的支持。
摘自 SSH 安全外壳
借助有关此问题的答案的信息以及 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-agent)。在这种情况下,唯一的问题是您必须在再次登录时重新添加您的密钥(进入 Gnome 或 XFCE)。要解决此问题,您可以手动导出密钥并进行转换。
本文档展示了如何在 SSH.com 客户端上执行此操作;我不确定它是否适用于 OpenSSH,但可能值得一试。
从 GPG 导出私有 SSH 密钥,无需额外安装软件
找到所需私钥的钥匙扣
将其导入新的临时 gpgsm 密钥环
将密钥转换为 pkcs12 格式
像以前一样再次输入加密密码进行解密。然后输入用于保护 .p12 文件的新密码。如果您的 /tmp 文件夹像我的一样位于 RAM 上,您可以将其留空,因为它将在重新启动后被安全擦除。
将其转换为 ssh 友好格式
此外,它需要剥离输出的前 4 行,使其以 ---BEGIN PRIVATE KEY--- 开头
在那里,您的 sshkey 可供 ssh 客户端使用。希望这会有所帮助,对我来说这是必要的,因为我无法安装monkeysphere。