为什么 gpg-agent 创建多个套接字

为什么 gpg-agent 创建多个套接字

gpg使用with时,会在我的目录gpg-agent中创建以下套接字:~/.gnupg

S.gpg-agent
S.gpg-agent.browser
S.gpg-agent.extra
S.gpg-agent.ssh

我认为,S.gpg-agent是标准gpg-agent插座。但其他的有什么用呢?

我没有将 gpg 与 ssh 一起使用,也没有将 gpg 与浏览器一起使用。

在哪里配置的,这些是自动创建的吗?

我可以禁用它们吗?

我只需要标准S.gpg-agent

gnupg 2.2.12我在 Debian Buster 上使用。

答案1

它们gpg-agent可以具有多种个性并提供不同的服务。

例如,您可以停止ssh-agent在您的盒子上运行,并用作gpg-agent替换...只要您使用正确的套接字,S.gpg-agent.ssh因为它必须实现ssh期望讨论的正确协议。为什么会有那么有用?例如,直到最近,ssh还无法使用存储在 FIDO2/U2F 中的密钥(如 Yubikeys),这只是在不久前发布的 8.2 中添加的,这使得事情变得非常简单,如中所述https://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

在此之前,gpg-agent会使用它,因为gpg它支持 U2F 事物,就像智能​​卡一样处理。这是有关如何执行此操作的规范文档之一:https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

现在回到gpg-agent,其完整手册位于https://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

您可以在以下位置找到所有选项https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options可以将其放入配置文件中,通常~/.gnupg/gpg-agent.conf

我们可以学习例如:

  1. 关于其中.extra一个,我们可以了解如何禁用它以及它的用途:
--extra-socket name

默认情况下会创建额外的套接字,您可以使用此选项更改套接字的名称。要禁用套接字的创建,请使用“none”或“/dev/null”作为名称。

还侦听给定套接字上的本机 gpg-agent 连接。此额外套接字的预期用途是设置从远程计算机转发到本地计算机上的此套接字的 Unix 域套接字。然后,在远程计算机上运行的 gpg 可以连接到本地 gpg-agent 并使用其私钥。这样就可以在远程计算机上解密或签名数据,而无需将私钥暴露给远程计算机。

  1. 对于 ssh 支持,.ssh有:

--enable-ssh-support

--enable-putty-support

OpenSSH Agent 协议始终处于启用状态,但如果给出了此标志,gpg-agent 将仅设置 SSH_AUTH_SOCK 变量。

在这种操作模式下,代理不仅实现了 gpg-agent 协议,还实现了 OpenSSH 使用的代理协议(通过单独的套接字)。因此,应该可以使用 gpg-agent 作为众所周知的 ssh-agent 的直接替代品。

  1. 有关浏览器套接字和更多信息,您可以使用https://wiki.archlinux.org/index.php/GnuPG#gpg-agent说的是:

gpg-agent主要用作守护进程来请求和缓存钥匙串的密码。如果从外部程序(如邮件客户端)使用 GnuPG,这非常有用。 gnupg 附带了默认启用的 systemd 用户套接字。这些套接字是gpg-agent.socketgpg-agent-extra.socketgpg-agent-browser.socketgpg-agent-ssh.socketdirmngr.socket

gpg-agent.socketgpg 使用main来连接到gpg-agent守护进程。

在本地系统上的预期用途gpg-agent-extra.socket是设置从远程系统转发的 Unix 域套接字。这使得可以在远程系统上使用 gpg,而无需将私钥暴露给远程系统。有关详细信息,请参阅 gpg-agent(1)。

允许gpg-agent-browser.socketWeb 浏览器访问 gpg-agent 守护进程。

gpg-agent-ssh.socketSSH 可以使用它来缓存 ssh-add 程序添加的 SSH 密钥。请参阅 #SSH 代理以获取必要的配置。

启动dirmngr.socket一个 GnuPG 守护进程来处理与密钥服务器的连接。

因此,即使您不使用它们,拥有它们也没有什么坏处。如果您确实想确保它们不存在,您可以尝试将以下内容放入 gpg-agent 配置文件中:

extra-socket /dev/null
browser-socket /dev/null

我没有测试这一点,文档没有提及,browser-socket但这个较旧的问题确实如此:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location

相关内容