Mantieni le credenziali di GnuPG nella cache per l'intera sessione utente


53

GnuPG può, con gpg-agent, memorizzare nella cache l'accesso a una chiave privata. Come posso mantenere attiva quella cache per l'intera sessione utente ?

Quando sblocco la chiave per gpg-agent, rimane nella cache solo per un tempo limitato. Con l'agente di SSH, inserisco la passphrase una volta e rimane memorizzata nella cache per l'intera sessione. Voglio lo stesso comportamento da gpg-agent.

Quindi, ssh-agentnon soffre di una durata della cache limitata. Ma gpg-agentlimita la durata della cache, almeno per impostazione predefinita. Come posso eliminare il limite del tempo di cache da gpg-agent?

Risposte:


69

Fino a GnuPG 2

La configurazione utente (in ~/.gnupg/gpg-agent.conf) può solo definire la durata di memorizzazione nella cache predefinita e massima; non può essere disabilitato.

L' default-cache-ttlopzione imposta il timeout (in secondi) dopo l'ultima attività di GnuPG (quindi si reimposta se la usi), l' maximum-cache-ttlopzione imposta il periodo (in secondi) che memorizza nella cache dopo aver inserito la password. Il valore predefinito è 600 secondi (10 minuti) per default-cache-ttle 7200 secondi (2 ore) per maximum-cache-ttl.

Impostalo su un anno o giù di lì - diciamo, 34560000 secondi (400 giorni) - e dovresti andare bene:

default-cache-ttl 34560000
maximum-cache-ttl 34560000

Ma affinché questa modifica abbia effetto, è necessario terminare la sessione riavviando gpg-agent.

Se si desidera limitare la durata della sessione, è necessario uccidere il demone al logout. Questo è molto diverso tra i sistemi operativi, quindi mi riferisco a un'altra domanda / risposta contenente suggerimenti per sistemi diversi .

È inoltre possibile riavviare gpg-agentdurante l'accesso, ma ciò non limita il tempo di memorizzazione nella cache per la durata della sessione, ma gli accessi di un utente. Decidi tu stesso se questo è un problema nel tuo caso.

GnuPG 2.1 e versioni successive

In GnuPG 2.1 e versioni successive, l' maximum-cache-ttlopzione è stata rinominata max-cache-ttlsenza ulteriori modifiche.


È una risposta "non puoi fare quello che stai chiedendo"? Non è chiaro, dal momento che stai parlando di limitare la durata della sessione o limitare il tempo di memorizzazione nella cache. Voglio esattamente il contrario: nessun limite arbitrario sul tempo di cache o sulla durata della sessione.
bignose,

Un po 'di quello, puoi solo aggirare impostando un ttl piuttosto enorme. Impostalo su un anno circa e dovresti andare bene, ma devi terminare la sessione riavviando gpg-agent.
Jens Erat,

Si noti che nelle versioni più recenti (almeno gnupg 2.1), l' maximum-cache-ttlopzione non esiste. Per visualizzare le opzioni corrette, consultare la documentazione ufficiale: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.

3
Almeno in GnuPG 2.1 il valore predefinito default-cache-ttlè 600 secondi (10 minuti), non due ore.
jlh

@jlh Guardando le pagine man per le diverse versioni di gpg-agent, il valore corretto sembra essere di 10 minuti per tutte le versioni. Ho modificato la risposta, grazie per averlo sottolineato.
Jens Erat,

7

Per Windows

Il file che devi modificare dovrebbe essere posizionato in: $env:AppData\gnupg

Se lo esegui in una finestra di PowerShell, si aprirà: C:\Users\<UserName>\AppData\Roaming\gnupg

Basta inserire il gpg-agent.conffile lì con qualsiasi valore ti piaccia.

Puoi verificarlo impiegando:

  1. gpgconf.exe --reload gpg-agent
  2. gpgconf.exe --list-options gpg-agent

Puoi anche usare questa fodera: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"


Se una seconda risposta qui non è appropriata, possiamo spostarla sulla sua stessa domanda, contrassegnata con Windows. Non sono sicuro di cosa sia giusto :)
CubanX il

Grazie e tienilo qui - bello avere tutte le informazioni in un unico posto. 👍
barfuin

5

Assicurati di ricaricare il tuo agente gpg con gpg-connect-agent reloadagent /byedopo aver modificato la configurazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.