des*_*tan 85 ssh public-key gnupg private-key
我想生成一个RSA
密钥GPG
并在SSH
登录时使用它。这甚至可能吗?如果是这样,如何?
编辑:请参阅@wwerner 的回答,我没有尝试过,但它似乎是当前的解决方案(截至 2018 年)
wwe*_*ner 51
我知道这是一个旧帖子,但对于像我这样绊倒这个的人:
现在(从 gpg 2.1 开始)可以直接使用 gpg: 简单地提取 ssh 密钥
gpg --export-ssh-key <key id>!
。
该!
标记是可选的,它使主密钥可导出并省略检查密钥是否具有身份验证能力 ([CA])。
细节:
Cla*_*ani 34
我正在做一些关于这个主题的研究,我可以给你一些提示,但我还没有找到让它工作的方法。
Monkeysphere似乎是一个非常有趣的项目,但我无法在 Mac OS X 下编译它,而不会用 MacPorts 堵塞我的小可用磁盘空间。
我建议您尝试的第一种方法是从您的密钥 ID(例如 BFB2E5E3)生成一个兼容的 authorized_keys 条目
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
在这里,我将它添加到我的本地主机,因为我为了测试目的运行了一个 ssh 服务器,但当然你应该将它添加到目标主机~/.ssh/authorized_keys
。接下来,您需要告诉 SSH 在身份验证期间使用此密钥的私有部分,但仅导出密钥对的 ASCII 装甲版本是行不通的:
gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost
Run Code Online (Sandbox Code Playgroud)
gpg-agent
具有--enable-ssh-support
允许它使用它作为众所周知的替代品的选项ssh-agent
。我读过一些人在以这种方式ssh-add
启动后试图通过他们的 GPG 密钥添加gpg-agent
:
gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
Run Code Online (Sandbox Code Playgroud)
但我认为这永远不会奏效。该GPG代理手册页说:
通过代理使用的 SSH 密钥需要首先通过 ssh-add 实用程序添加到 gpg-agent。添加密钥时,ssh-add 会询问提供的密钥文件的密码,并将未受保护的密钥材料发送给代理;这会导致 gpg-agent 请求密码短语,用于加密新收到的密钥并将其存储在 gpg-agent 特定目录中。
因此,似乎gpg-agent
应该将其用作使用 GPG 加密保护 SSH 密钥的附加措施。
Jérôme Pouiller 在他的博客中写道 Gpgsm 实用程序可以在 PCSC12 中导出密钥和证书;然后它们可以被 OpenSSH 使用:
gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub
Run Code Online (Sandbox Code Playgroud)
但是我还没有找到一种方法来gpgsm
接受我的 gpg 密钥对。
SSH 有一个-I
选项来指定 PKCS#11 共享库ssh
应该用于与提供用户私有 RSA 密钥的 PKCS#11 令牌进行通信。
ssh-keygen
可以使用 RFC4716/SSH2 公钥或私钥、PEM PKCS8 公钥和 PEM 公钥使用-i
和-m
选项生成与 OpenSSH 兼容的私钥(或公钥)。
我仍然无法找到将它们组合在一起的方法。
use*_*686 15
不,它们不可互换。是的,可以使用 GPG 密钥进行身份验证——Monkeysphere软件包具有从 GPG 证书中提取原始 RSA 密钥对的工具。
您的 GPG 证书将需要带有“身份验证”功能标志的子密钥。要创建这样的子项,请运行一次:
monkeysphere g
Run Code Online (Sandbox Code Playgroud)现在将您的身份验证子项添加到ssh-agent:
monkeysphere s
Run Code Online (Sandbox Code Playgroud)有点相关:这个 gnupg-users thread。
jer*_*oen 10
根据这个问题的答案中的信息以及 gnupg-users 邮件列表的帮助,我能够弄清楚如何使用我的 GPG 密钥进行 SSH 身份验证。正如 Claudio Floreani 在他的回答中已经提到的那样,有几种可能的方法可以做到这一点。
我写了一篇关于一些可能的解决方案的博文: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)时必须重新添加您的密钥。要解决此问题,您可以手动导出密钥并进行转换。
归档时间: |
|
查看次数: |
46468 次 |
最近记录: |