為什麼 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 上使用。
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 代理協議始終處於啟用狀態,但 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 使用main
gpg-agent.socket
連接到gpg-agent
守護程序。在本地系統上的預期用途
gpg-agent-extra.socket
是設置從遠端系統轉發的 Unix 域套接字。這使得可以在遠端系統上使用 gpg 而無需將私鑰暴露給遠端系統。有關詳細資訊,請參閱 gpg-agent(1)。允許 Web 瀏覽器
gpg-agent-browser.socket
訪問 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