Answers:
我知道这是一篇过时的文章,但对于像我这样的人来说,是绊脚石:
现在(自gpg 2.1起)可以直接使用gpg:直接提取ssh键
gpg --export-ssh-key <key id>!
。
该!
标记是可选的,它使主密钥可导出,并且省略了对密钥是否具有身份验证([CA])的检查。
细节:
我正在对此主题进行一些研究,可以给您一些提示,但是我还没有找到一种使之起作用的方法。
Monkeysphere似乎是一个非常有趣的项目,但是我无法在Mac OS X上编译它而没有用MacPorts阻塞我的少量可用磁盘空间。
我建议您尝试的第一种方法是通过以下方式从您的密钥ID(例如BFB2E5E3)生成兼容的authorized_keys条目:
gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys
自从我运行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
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
但是我认为这不会奏效。该GPG代理手册页说:
最初需要通过ssh-add实用程序将通过代理使用的SSH密钥添加到gpg-agent中。添加密钥后,ssh-add将要求提供所提供密钥文件的密码,并将不受保护的密钥材料发送给代理。这会导致gpg-agent要求输入密码,该密码将用于加密新接收的密钥并将其存储在gpg-agent特定的目录中。
因此,似乎gpg-agent
应该将其作为GPG加密保护SSH密钥的附加措施。
JérômePouiller在他的博客中写道,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
但是我还没有找到一种方法来gpgsm
接受我的gpg密钥对。
SSH可以-I
选择指定PKCS#11共享库ssh
,用于与提供用户的私有RSA密钥的PKCS#11令牌进行通信。
ssh-keygen
可以使用RFC4716 / SSH2公共或私有密钥,PEM PKCS8公共密钥和PEM公共密钥生成使用的OpenSSH的兼容私人(或公共)键-i
和-m
选项。
我仍然找不到将所有内容放在一起的方法。
gpgkey2ssh
自--export-ssh-key
2.1.11版(2016-01-26)起已被替换。我花了一段时间才意识到这一点。用法是gpg --export-ssh-key BFB2E5E3
。
不,它们不可互换。是的,可以使用GPG密钥进行身份验证– Monkeysphere软件包具有从GPG证书中提取原始RSA密钥对的工具。
您的GPG证书将需要带有“身份验证”功能标志的子项。要创建这样的子项,请运行一次:
monkeysphere g
现在将您的身份验证子项添加到ssh-agent:
monkeysphere s
有点相关:这个gnupg-users线程。
有了有关此问题的答案中的信息以及gnupg-users邮件列表的帮助,我便能够弄清楚如何使用GPG密钥进行SSH身份验证。正如克劳迪奥·弗洛雷阿尼(Claudio Floreani)在回答中已经提到的那样,有几种可能的方法可以做到这一点。
我写了一篇有关某些可能解决方案的博客文章:http : //budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
总结:您可以使用当前处于beta版的GnuPG 2.1。使用此版本时,只需使用--enable-ssh-support选项启动gpg-agent并将GPG密钥(或子密钥)的密钥集添加到〜/ .gnupg / sshcontrol中。
当您使用当前稳定的GnuPG版本(2.0.x)时,可以使用Monkeysphere将密钥添加到gpg-agent(同样,使用--enable-ssh-support选项启动gpg-agent之后)。
在Monkeysphere的帮助下,也可以使用GNOME密钥环(甚至是常规的ssh-agent)。在这种情况下,唯一的问题是,当再次登录(登录到Gnome或XFCE)时,您将不得不重新添加密钥。为了解决这个问题,您可以手动导出密钥并进行转换。