如何同时使用 gpg 和 SSH?

qaz*_*wsx 11 ssh pgp gnupg

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

如何同时使用 gpg 和 SSH?

我知道 1) 使用 gpg 加密和解密文本文件和 2) 生成和使用 SSH 密钥来访问远程服务器而无需密码的基本过程。

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

Cla*_*ani 7

我正在做一些关于这个主题的研究,我可以给你一些提示,但我还没有找到让它工作的方法。

猴圈

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

使用 gpgkey2ssh

我建议您尝试的第一种方法是从您的密钥 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

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 密钥的附加措施。

将 GPG 密钥转换为 OpenSSH

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 兼容的私钥(或公钥)。

我仍然无法找到将它们组合在一起的方法。

  • 我不确定你想用 `gpg --armor --export-secret-key BFB2E5E3 完成什么!|tee ~/.ssh/id_rsa`。你使用 `tee` 只是为了看到输出吗?这个命令的输出不适合`ssh-add`使用;生成的`id_rsa`文件不能加载到`ssh-agent`或`gpg-agent`中,也不能直接被`ssh`使用。 (2认同)

归档时间:

查看次数:

14712 次

最近记录:

7 年,3 月 前