Gpg

為什麼 gpg-agent 會創建多個套接字

  • August 23, 2020

使用gpgwith時,會在我的目錄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 上使用。

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 代理協議始終處於啟用狀態,但 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.socket和。gpg-agent-ssh.socket``dirmngr.socket

gpg 使用maingpg-agent.socket連接到gpg-agent守護程序。

在本地系統上的預期用途gpg-agent-extra.socket是設置從遠端系統轉發的 Unix 域套接字。這使得可以在遠端系統上使用 gpg 而無需將私鑰暴露給遠端系統。有關詳細資訊,請參閱 gpg-agent(1)。

允許 Web 瀏覽器gpg-agent-browser.socket訪問 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

引用自:https://unix.stackexchange.com/questions/605445