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é pour 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-agent
ne souffre pas d'une durée de vie limitée du cache. Mais gpg-agent
limite la durée de vie du cache, au moins par défaut. Comment puis-je éliminer la limite de temps de cache de gpg-agent
?
La configuration utilisateur (dans ~/.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'option default-cache-ttl
définit le délai d'attente (en secondes) après la dernière activité de GnuPG (afin qu'elle se réinitialise si vous l'utilisez), l'option maximum-cache-ttl
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-ttl
et 7200 secondes (2 heures) pour maximum-cache-ttl
.
Définissez-le à environ un an - disons, 34560000 secondes (400 jours) - et ça devrait aller:
default-cache-ttl 34560000
maximum-cache-ttl 34560000
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 gpg-agent
lors de la connexion, mais cela ne limite pas la durée de la mise en cache à la longueur 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.
Dans GnuPG 2.1 et supérieur, l'option maximum-cache-ttl
a été renommée en max-cache-ttl
sans autre modification.
Le fichier que vous devez modifier doit être placé à: $env:AppData\gnupg
Si vous l'exécutez dans une fenêtre PowerShell, celui-ci s'ouvrira: C:\Users\<UserName>\AppData\Roaming\gnupg
Il suffit de placer le fichier gpg-agent.conf
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 cette doublure: Set-Content -Path $env:AppData\gnupg\gpg-agent.conf -Value "default-cache-ttl 86400$([System.Environment]::NewLine)max-cache-ttl 86400"
Assurez-vous de recharger votre agent gpg avec gpg-connect-agent reloadagent /bye
après avoir modifié la configuration.