_ssh-agent
_ est très facile à utiliser, je le démarre et ajoute des clés à l'aide de _ssh-add keyfile
_. Après la suppression du processus _ssh-agent
_, tous les fichiers ont disparu.
Comment puis-je avoir le même comportement avec _gpg-agent
_? Le programme le plus proche que j'ai trouvé était gpg-preset-passphrase
. Mais en regardant page de manuel de _gpg-agent
_ , il semble qu'un répertoire est créé pour stocker les clés privées.
Je peux me tromper, alors je me demande comment configurer _gpg-agent
_ de manière à ce qu'aucun fichier/répertoire ne soit créé? Si ce n’est pas possible, d’autres suggestions pour que _gpg-agent
_ fonctionne comme _ssh-agent
_ + _ssh-add
_ seraient également les bienvenues. Je ne cherche pas de solutions graphiques comme Seahorse.
J'ai décidé d'y jeter un coup d'œil et de découvrir comment cela fonctionne. GPG utilise la terminologie "cache" pour stocker les mots de passe. Deux contraintes peuvent être imposées sur la durée maximale de stockage:
De plus, il existe deux variantes pour les deux contraintes, une pour les clés GPG et une pour les clés SSH (si le support a été activé).
Les entrées de page de manuel pertinentes de gpg-agent(1)
:
--default-cache-ttl n
Set the time a cache entry is valid to n seconds. The default
is 600 seconds.
--default-cache-ttl-ssh n
Set the time a cache entry used for SSH keys is valid to n sec‐
onds. The default is 1800 seconds.
--max-cache-ttl n
Set the maximum time a cache entry is valid to n seconds. After
this time a cache entry will be expired even if it has been
accessed recently. The default is 2 hours (7200 seconds).
--max-cache-ttl-ssh n
Set the maximum time a cache entry used for SSH keys is valid to
n seconds. After this time a cache entry will be expired even
if it has been accessed recently. The default is 2 hours (7200
seconds).
Les phrases secrètes sont toujours mises en cache (en mémoire, pas sur disque! Vérifié avec un dépôt Git de $HOME
), de sorte qu'il n'y a pas de besoin explicite de ssh-add
. Par exemple, la signature de données factices déclenche déjà le cache:
$ echo | gpg -s >/dev/null
(passphrase requested
$ echo | gpg -s >/dev/null
(signing proceeds without asking for passphrase)
Pour apporter des modifications permanentes aux paramètres de cache de gpg-agent, éditez le fichier ~/.gnupg/gpg-agent.conf` et ajoutez quelque chose comme:
default-cache-ttl 60 # Expire GPG keys when unused for 1 minute
max-cache-ttl 600 # Expire GPG keys after 10 minutes since addition
J'ai essayé d'activer le support des agents SSH en spécifiant enable-ssh-support
, mais cela oblige l'agent gpg à vous demander une autre clé pour chiffrer la clé, puis stocke votre clé privée dans ~/.gnupg/private-keys.d/
. Non, partez pour moi, je vais m'en tenir à une approche double ssh-agent/gpg-agent.
Quelques astuces bonus:
max-cache-ttl-ssh
de l'agent SSH peut être spécifié lors de l'ajout de la clé, par exemple: ssh-add -t 600 ~/.ssh/id_rsa
Pour éviter de stocker la phrase secrète GPG dans l'agent, désactivez l'agent. Dans les versions GPG plus récentes, l'option --no-use-agent
est ignorée, mais vous pouvez empêcher l'utilisation de l'agent en effaçant la variable d'environnement associée. Quelques façons de le faire:
echo | GPG_AGENT_INFO= gpg -s # temporary
export GPG_AGENT_INFO=; echo | gpg -s # until the current Shell is closed