Conserver les informations d'identification GnuPG en mémoire cache pour toute la session utilisateur
53
GnuPG peut, avec gpg-agent, mettre en cache l’accès à une clé privée. Comment puis-je garder ce cache actif pour toute la session utilisateur ?
Lorsque je déverrouille la clé gpg-agent, elle ne reste en cache que pendant un temps limité. Avec l'agent SSH, je saisis la phrase secrète une fois et celle-ci reste en cache pendant toute la session. Je veux le même comportement de gpg-agent.
Donc, ssh-agentne souffre pas d'une durée de vie limitée du cache. Mais gpg-agentlimite la durée de vie du cache, au moins par défaut. Comment puis-je éliminer la limite de temps de cachegpg-agent ?
La configuration utilisateur (in ~/.gnupg/gpg-agent.conf) peut uniquement définir la durée de mise en cache par défaut et maximale; il ne peut pas être désactivé.
L' default-cache-ttloption définit le délai d'attente (en secondes) après la dernière activité de GnuPG (afin qu'il se réinitialise si vous l'utilisez), l' maximum-cache-ttloption définit la durée (en secondes) qu'il met en cache après la saisie de votre mot de passe. La valeur par défaut est 600 secondes (10 minutes) pour default-cache-ttlet 7200 secondes (2 heures) pour maximum-cache-ttl.
Définissez-le à environ un an - disons, 34560000 secondes (400 jours) - et ça devrait aller:
Mais pour que cette modification prenne effet, vous devez terminer la session en redémarrant gpg-agent.
Si vous souhaitez limiter la durée de votre session, vous devez tuer le démon lors de la déconnexion. Ceci est très différent entre les systèmes d'exploitation, je me réfère donc à une autre question / réponse contenant des astuces pour différents systèmes .
Vous pouvez également redémarrer le serveur gpg-agentlors de la connexion, mais cela ne limite pas la durée de la mise en cache à la durée de la session, mais les connexions d'un utilisateur. Décidez vous-même s'il s'agit d'un problème dans votre cas.
GnuPG 2.1 et supérieur
Dans GnuPG 2.1 et supérieur, l’ maximum-cache-ttloption a été renommée max-cache-ttlsans autre changement.
Est-ce une réponse «vous ne pouvez pas faire ce que vous demandez»? Ce n'est pas clair, car vous parlez de limiter la durée de la session ou de limiter la durée de la mise en cache. Je veux exactement le contraire de cela: pas de limite arbitraire sur le temps de cache ou la durée de la session.
Bignose
En quelque sorte, vous ne pouvez contourner ce problème qu'en définissant un ttl plutôt énorme. Définissez-le à environ un an et vous devriez aller bien - mais vous devez mettre fin à la session en redémarrant gpg-agent.
Jens Erat
Veuillez noter que dans les dernières versions (au moins gnupg 2.1), l’ maximum-cache-ttloption n’existe pas. Pour voir les options correctes, voir la documentation officielle: gnupg.org/documentation/manuals/gnupg/…
Pablo Olmos de Aguilera C.
3
Au moins dans GnuPG 2.1, la valeur par défaut default-cache-ttlest 600 secondes (10 minutes) et non deux heures.
Jlh
@jlh En regardant les pages de manuel pour différentes versions de gpg-agent, la valeur correcte semble être 10 minutes pour toutes les versions. J'ai édité la réponse, merci de l'avoir signalé.
Jens Erat
7
Pour les fenêtres
Le fichier que vous devez modifier doit être placé à: $env:AppData\gnupg
Si vous l'exécutez dans une fenêtre PowerShell, il s'ouvre: C:\Users\<UserName>\AppData\Roaming\gnupg
Il suffit de mettre le gpg-agent.conffichier là-bas avec les valeurs de votre choix.
Vous pouvez le vérifier en exécutant:
gpgconf.exe --reload gpg-agent
gpgconf.exe --list-options gpg-agent
Vous pouvez également utiliser ce liner:
Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"
Si une deuxième réponse ne convient pas, nous pouvons déplacer cette question vers sa propre question, étiquetée avec Windows. Pas sûr de ce qui est bien :)
CubanX
Merci et conservez-le ici. C'est bien d'avoir toutes les informations au même endroit. 👍
barfuin
5
Assurez-vous de recharger votre agent gpg gpg-connect-agent reloadagent /byeaprès avoir modifié la configuration.
gpg-agent
.maximum-cache-ttl
option n’existe pas. Pour voir les options correctes, voir la documentation officielle: gnupg.org/documentation/manuals/gnupg/…default-cache-ttl
est 600 secondes (10 minutes) et non deux heures.gpg-agent
, la valeur correcte semble être 10 minutes pour toutes les versions. J'ai édité la réponse, merci de l'avoir signalé.Pour les fenêtres
Le fichier que vous devez modifier doit être placé à:
$env:AppData\gnupg
Si vous l'exécutez dans une fenêtre PowerShell, il s'ouvre:
C:\Users\<UserName>\AppData\Roaming\gnupg
Il suffit de mettre le
gpg-agent.conf
fichier là-bas avec les valeurs de votre choix.Vous pouvez le vérifier en exécutant:
gpgconf.exe --reload gpg-agent
gpgconf.exe --list-options gpg-agent
Vous pouvez également utiliser ce liner:
Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"
la source
Assurez-vous de recharger votre agent gpg
gpg-connect-agent reloadagent /bye
après avoir modifié la configuration.la source