J'ai une ligne dans mon fichier gpg.conf qui dit use-agent
.
Je comprends que cela fait référence à gpg-agent qui est un démon. La page de manuel indique que "gpg-agent est un démon pour gérer les clés secrètes (privées) indépendamment de tout protocole. Il est utilisé comme backend pour gpg et gpgsm ainsi que pour quelques autres utilitaires."
Quelqu'un peut-il expliquer ce que cela signifie dans le contexte de gpg? Quel est l'intérêt de gpg-agent?
J'ai actuellement GPG 1.4.
Gpg-agent est un programme qui s'exécute en arrière-plan (un démon ) et stocke les clés secrètes GPG en mémoire. Lorsqu'un processus GPG a besoin de la clé, il contacte le programme gpg-agent en cours d'exécution via un socket et demande la clé. Si le processus d'agent possède la clé, il la fournit à gpg. Si ce n'est pas le cas, il tente de charger la clé chiffrée à partir de votre trousseau de clés et vous invite à saisir le mot de passe de la clé. Une fois que l'agent a obtenu la clé déchiffrée, il la transmet au processus gpg. En plus des clés GPG, Gpg-agent peut également stocker des clés SSH et les fournir aux processus SSH, comme le ssh-agent
programme fourni avec SSH.
Le point principal de l'utilisation d'un agent clé est de ne pas avoir à taper votre phrase secrète à chaque fois que vous utilisez votre clé. L'agent garde la clé en mémoire d'une heure à l'autre. GPG lui-même ne peut pas faire cela car le processus se termine une fois qu'il a fait son travail.
Un autre agent clé peut faire est d'autoriser GPG exécuté sur une machine distante à obtenir des clés dans l'agent local (qui peut les charger à partir d'un fichier local et demander votre phrase secrète). Gpg-agent ne peut pas encore le faire, c'est un fonctionnalité prévue . SSH a le transfert d'agent depuis très longtemps. (C'est une raison pour ne pas utiliser gpg-agent pour les clés SSH.)
GPG 1.x ou 2.0.x sait que l'agent est en cours d'exécution car le GPG_AGENT_INFO
la variable est définie. Cette variable contient l'emplacement du socket pour communiquer avec l'agent ainsi que l'ID de processus de l'agent. GPG 2.1 place toujours le socket d'agent dans ~/.gnupg
. GPG 2.x démarre toujours un processus d'agent s'il n'est pas en cours d'exécution.
Vous pouvez démarrer l'agent simplement en exécutant gpg-agent
. Si vous souhaitez conserver un processus d'agent dans le cadre de votre session, vous pouvez remplacer l'appel de votre gestionnaire de sessions par gpg-agent my-session-manager
; certaines distributions configurent cela automatiquement. GPG démarrera automatiquement l'agent, et GPG 2.1 trouvera en outre un agent en cours d'exécution sans avoir besoin d'une variable d'environnement, vous n'avez donc pas besoin de le démarrer de cette façon à moins d'utiliser une ancienne version de GPG ou d'utiliser l'agent pour stocker d'autres types de clés telles que SSH.
Vous pouvez envoyer l'agent commandes avec le gpg-connect-agent
Commande shell. Envoyez la commande kill
pour tuer le processus agent (ou lui envoyer un signal).
Gpg-agent est livré avec GPG lui-même. Certaines distributions le conditionnent séparément.