如何一起使用gpg和SSH? [重复]

Modified on: Fri, 15 Feb 2019 07:40:02 +0800
  

可能重复:
  GPG和SSH密钥是否可互换?

如何一起使用gpg和SSH?

我知道以下基本步骤:1)使用gpg加密和解密文本文件; 2)生成并使用SSH密钥访问没有密码的远程服务器。

我想知道这两者是否可以整合。这两者是否无关,应该在日常使用中分开?

作者:Community,qazwsx

最佳答案

我正在做一些关于这个主题的研究,我可以给你一些提示,但我还没有办法让它成功。

Monkeysphere

Monkeysphere似乎是一个非常有趣的项目,但我无法编译它在Mac OS X下没有用MacPorts堵塞我的小可用磁盘空间。

使用gpgkey2ssh

我建议您尝试的第一种方法是从您的密钥ID(例如,BFB2E5E3)生成兼容的authorized_keys条目:

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

这里我将它添加到我的localhost,因为我运行了一个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

gpg-agent具有--enable-ssh-support选项,允许它将其用作众所周知的ssh-agent
我已经读过一些人在以这种方式启动ssh-add之后试图通过gpg-agent添加他们的GPG密钥:

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-agent联机帮助页说:

  

要通过代理使用的SSH密钥需要最初通过ssh-add实用程序添加到gpg-agent。
  添加密钥后,ssh-add将询问提供的密钥文件的密码,并将未受保护的密钥材料发送给代理;这会导致gpg-agent要求密码短语,密码短语用于加密新接收的密钥并将其存储在gpg-agent特定目录中。

所以似乎应该使用gpg-agent作为使用GPG加密保护SSH密钥的附加措施。

将GPG密钥转换为OpenSSH

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公钥,使用-i-m选项。

我还是找不到把它放在一起的方法。


相关问答

添加新评论