perché gpg-agent crea diversi socket

Aug 20 2020

quando si utilizza gpgcon gpg-agent, vengono creati i seguenti socket nella mia ~/.gnupgdirectory:

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

Presumo, S.gpg-agentè la gpg-agentpresa standard . Ma a cosa servono gli altri?

Non sto usando gpg con ssh o gpg con il browser.

Dove è configurato, che questi vengano creati automaticamente?

Posso disabilitarli?

Mi serve solo lo standard S.gpg-agent

Sto usando gnupg 2.2.12su Debian Buster.

Risposte

5 PatrickMevzek Aug 21 2020 at 18:09

Il gpg-agentpossono avere più personalità e fornire servizi diversi.

Ad esempio, puoi smettere di ssh-agentfunzionare sulla tua scatola e usarla gpg-agentcome sostituto ... fintanto che usi il socket corretto, S.gpg-agent.sshperché deve implementare il protocollo appropriato che sshsi aspetta di discutere. Perché potrebbe essere così utile? Ad esempio, fino a poco tempo fa, sshnon era possibile utilizzare le chiavi memorizzate in FIDO2 / U2F (come Yubikeys), questo è stato aggiunto solo in 8.2 rilasciato non molto tempo fa, il che poi rende le cose semplicissime come spiegato inhttps://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

Prima di allora, gpg-agentsarebbe stato utilizzato, perché gpgha il supporto per la cosa U2F come gestita come una smartcard. Questa è una delle documentazioni canoniche su come farlo:https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

Ora torniamo a gpg-agent, il suo manuale completo è all'indirizzohttps://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

Puoi trovare tutte le opzioni su https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options che può essere inserito in un file di configurazione, in genere ~/.gnupg/gpg-agent.conf

Possiamo imparare ad esempio:

  1. riguardo a .extraquello, possiamo imparare sia come disabilitarlo sia a cosa serve:
--extra-socket name

Il socket aggiuntivo viene creato per impostazione predefinita, è possibile utilizzare questa opzione per modificare il nome del socket. Per disabilitare la creazione del socket utilizzare "none" o "/ dev / null" per nome.

Ascolta anche le connessioni native di gpg-agent sul socket specificato. L'utilizzo previsto per questo socket aggiuntivo è impostare un inoltro del socket di dominio Unix da una macchina remota a questo socket sulla macchina locale. Un gpg in esecuzione sulla macchina remota può quindi connettersi all'agente gpg locale e utilizzare le sue chiavi private. Ciò consente la decrittografia o la firma dei dati su una macchina remota senza esporre le chiavi private alla macchina remota.

  1. Per il supporto ssh, .sshquello:

--enable-ssh-support

--enable-putty-support

Il protocollo OpenSSH Agent è sempre abilitato, ma gpg-agent imposterà la variabile SSH_AUTH_SOCK solo se viene fornito questo flag.

In questa modalità di funzionamento, l'agente non solo implementa il protocollo gpg-agent, ma anche il protocollo agent utilizzato da OpenSSH (tramite un socket separato). Di conseguenza, dovrebbe essere possibile utilizzare gpg-agent come sostituto immediato del ben noto ssh-agent.

  1. Per la presa del browser e ulteriori informazioni è possibile utilizzare https://wiki.archlinux.org/index.php/GnuPG#gpg-agent che dice:

gpg-agentviene utilizzato principalmente come demone per richiedere e memorizzare nella cache la password per il portachiavi. Questo è utile se GnuPG viene utilizzato da un programma esterno come un client di posta. gnupg viene fornito con i socket utente systemd che sono abilitati per impostazione predefinita. Tali prese sono gpg-agent.socket, gpg-agent-extra.socket, gpg-agent-browser.socket, gpg-agent-ssh.sockete dirmngr.socket.

Il main gpg-agent.socketè usato da gpg per connettersi al gpg-agentdemone.

L'utilizzo previsto per gpg-agent-extra.socketsu un sistema locale è impostare un inoltro socket di dominio Unix da un sistema remoto. Ciò consente di utilizzare gpg sul sistema remoto senza esporre le chiavi private al sistema remoto. Vedi gpg-agent (1) per i dettagli.

Il gpg-agent-browser.socketpermette browser web per accedere al demone di gpg-agent.

La gpg-agent-ssh.socketpuò essere utilizzato da SSH per chiavi di cache SSH aggiunto dal programma ssh-add. Vedere l'agente #SSH per la configurazione necessaria.

Il dirmngr.socketavvia una GnuPG la gestione delle connessioni a keyservers daemon.

Quindi non c'è nulla di male ad averli anche se non li usi. Se vuoi davvero assicurarti che non siano presenti, puoi provare a inserire quanto segue in un file di configurazione gpg-agent:

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

Non l'ho testato, la documentazione non parla browser-socketma questa vecchia domanda lo fa:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location