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
我们可以学习例如:
- 关于其中
.extra
一个,我们可以了解如何禁用它以及它的用途:
--extra-socket name
默认情况下会创建额外的套接字,您可以使用此选项更改套接字的名称。要禁用套接字的创建,请使用“none”或“/dev/null”作为名称。
还侦听给定套接字上的本机 gpg-agent 连接。此额外套接字的预期用途是设置从远程计算机转发到本地计算机上的此套接字的 Unix 域套接字。然后,在远程计算机上运行的 gpg 可以连接到本地 gpg-agent 并使用其私钥。这样就可以在远程计算机上解密或签名数据,而无需将私钥暴露给远程计算机。
- 对于 ssh 支持,
.ssh
有:
--enable-ssh-support
--enable-putty-support
OpenSSH Agent 协议始终处于启用状态,但如果给出了此标志,gpg-agent 将仅设置 SSH_AUTH_SOCK 变量。
在这种操作模式下,代理不仅实现了 gpg-agent 协议,还实现了 OpenSSH 使用的代理协议(通过单独的套接字)。因此,应该可以使用 gpg-agent 作为众所周知的 ssh-agent 的直接替代品。
- 有关浏览器套接字和更多信息,您可以使用https://wiki.archlinux.org/index.php/GnuPG#gpg-agent说的是:
gpg-agent
主要用作守护进程来请求和缓存钥匙串的密码。如果从外部程序(如邮件客户端)使用 GnuPG,这非常有用。 gnupg 附带了默认启用的 systemd 用户套接字。这些套接字是gpg-agent.socket
、gpg-agent-extra.socket
、gpg-agent-browser.socket
和gpg-agent-ssh.socket
。dirmngr.socket
gpg-agent.socket
gpg 使用main来连接到gpg-agent
守护进程。在本地系统上的预期用途
gpg-agent-extra.socket
是设置从远程系统转发的 Unix 域套接字。这使得可以在远程系统上使用 gpg,而无需将私钥暴露给远程系统。有关详细信息,请参阅 gpg-agent(1)。允许
gpg-agent-browser.socket
Web 浏览器访问 gpg-agent 守护进程。
gpg-agent-ssh.socket
SSH 可以使用它来缓存 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