Ho una riga nel mio file gpg.conf che dice use-agent
.
Capisco che questo si riferisce a gpg-agent che è un demone. La pagina di manuale afferma “gpg-agent è un demone per gestire chiavi segrete (private) indipendentemente da qualsiasi protocollo. Viene utilizzato come backend per gpg e gpgsm, nonché per un paio di altre utilità.”
Qualcuno può spiegare cosa significa nel contesto di gpg? Qual è lo scopo di gpg-agent?
Al momento ho GPG 1.4.
- Come posso sapere se lagente è in esecuzione? In realtà non sono nemmeno chiaro se gpg-agent sia installato con il pacchetto GPG 1.4 di base.
- Come posso avviarlo, se non è in esecuzione?
- Come posso fermarlo, se è in esecuzione?
Risposta
Gpg-agent è un programma che viene eseguito in background (un daemon ) e archivia le chiavi segrete GPG in memoria. Quando un processo GPG ha bisogno della chiave, contatta il programma gpg-agent in esecuzione tramite un socket e richiede la chiave. Se il processo dellagente dispone della chiave, la fornisce a gpg. In caso contrario, tenta di caricare la chiave crittografata dal tuo portachiavi e ti chiede la passphrase della chiave. Una volta che lagente ha ottenuto la chiave decrittografata, la passa al processo gpg. Oltre alle chiavi GPG, Gpg-agent può memorizzare allo stesso modo le chiavi SSH e fornirle ai processi SSH, come ssh-agent
programma fornito con SSH.
Il punto principale dellutilizzo di un agente chiave è che tu non è necessario digitare la passphrase ogni volta che si utilizza la chiave. Lagente conserva la chiave in memoria da una volta allaltra. GPG stesso non può farlo perché il processo termina una volta che ha svolto il suo lavoro.
Unaltra cosa che un agente chiave può fare è consentire a GPG in esecuzione su una macchina remota di ottenere le chiavi nellagente locale ( che potrebbe caricarli da un file locale e richiedere la passphrase). Gpg-agent non può ancora farlo, è una funzionalità pianificata . SSH dispone dellinoltro dellagente da molto tempo (questo è un motivo per non farlo usa gpg-agent per le chiavi SSH.)
GPG 1.x o 2.0.x sa che lagente è in esecuzione perché la variabile GPG_AGENT_INFO
è impostata. Questa variabile contiene la posizione del socket per comunicare con lagente e lID del processo dellagente. GPG 2.1 colloca sempre il socket dellagente in ~/.gnupg
. GPG 2.x avvia sempre un agente processo se non è in esecuzione.
È possibile avviare lagente semplicemente eseguendo gpg-agent
. Se desideri mantenere un processo agente come parte della tua sessione, puoi sostituire linvocazione del gestore sessioni con gpg-agent my-session-manager
; alcune distribuzioni lo impostano automaticamente. GPG avvierà automaticamente lagente e GPG 2.1 troverà inoltre un agente in esecuzione senza bisogno di una variabile di ambiente, quindi non è necessario avviarlo in questo modo a meno che non si utilizzi una versione precedente di GPG o si utilizzi lagente per memorizzare altri tipi di chiavi come SSH.
È possibile inviare allagente comandi con i gpg-connect-agent
comando shell. Invia il kill
comando a uccidere il processo dellagente (o inviargli un segnale).
Gpg-agent viene fornito con GPG stesso. Alcune distribuzioni lo impacchettano separatamente.
Commenti
- " Quando un processo GPG ha bisogno della chiave, contatta il programma gpg-agent in esecuzione tramite un socket e richiede la chiave. Se il processo dellagente ha la chiave, lo fornisce a gpg. " Leggermente fuorviante. Lagente non fornisce una chiave per il processo client. Invece, perf esegue azioni utilizzando la chiave, per conto del processo client. (Il client fornisce allagente qualcosa da firmare, crittografare o decrittografare e lagente lo fa.) Quando si utilizza un agente, il software client SSH e GPG non ha mai accesso alla chiave effettiva.
- " Gpg-agent non può ' farlo ancora, è una funzionalità pianificata. SSH utilizza linoltro dellagente da molto tempo. (Questo è un motivo per non utilizzare gpg-agent per le chiavi SSH.) " Non proprio vero. gpg-agent funziona bene con linoltro dellagente SSH. Lo uso tutti i giorni. Il client SSH gestisce linoltro, gpg-agent non è realmente coinvolto in questo. Ciò che non è supportato è che GPG stesso parli con un agente in remoto.