Tengo una línea en mi archivo gpg.conf que dice use-agent
.
Entiendo que esto se refiere a gpg-agent, que es un demonio. La página de manual dice «gpg-agent es un demonio para administrar claves secretas (privadas) independientemente de cualquier protocolo. Se usa como backend para gpg y gpgsm, así como para un par de otras utilidades».
¿Alguien puede explicar qué significa esto en el contexto de gpg? ¿Cuál es el punto de gpg-agent?
Actualmente tengo GPG 1.4.
- ¿Cómo puedo saber si el agente se está ejecutando? En realidad, ni siquiera tengo claro si gpg-agent está instalado con el paquete básico GPG 1.4.
- ¿Cómo puedo iniciarlo si no se está ejecutando?
- ¿Cómo puedo detenerlo, si se está ejecutando?
Respuesta
Gpg-agent es un programa que se ejecuta en segundo plano (un demonio ) y almacena las claves secretas GPG en la memoria. Cuando un proceso GPG necesita la clave, se comunica con el programa gpg-agent en ejecución a través de un socket y solicita la clave. Si el proceso del agente tiene la clave, se la proporciona a gpg. Si no la tiene, intenta cargar la clave encriptada desde tu anillo de claves y le solicita la contraseña de la clave. Una vez que el agente ha obtenido la clave descifrada, la pasa al proceso gpg. Además de las claves GPG, Gpg-agent puede almacenar claves SSH de manera similar y proporcionarlas a procesos SSH, como ssh-agent
programa que viene con SSH.
El punto principal de usar un agente de claves es que no tiene que escribir su contraseña cada vez que usa su clave. El agente guarda la clave en la memoria de una vez a otra. GPG en sí mismo no puede hacer eso porque el proceso termina una vez que ha hecho su trabajo.
Otra cosa que puede hacer un agente de claves es permitir que GPG que se ejecuta en una máquina remota obtenga claves en el agente local ( que puede cargarlos desde un archivo local y solicitar su contraseña). Gpg-agent no puede hacer esto todavía, es una función planificada . SSH ha tenido reenvío de agentes durante mucho tiempo. (Esta es una razón para no use gpg-agent para las claves SSH.)
GPG 1.xo 2.0.x sabe que el agente se está ejecutando porque la variable GPG_AGENT_INFO
está configurada. Esta variable contiene la ubicación del socket para comunicarse con el agente, así como el ID de proceso del agente. GPG 2.1 siempre coloca el socket del agente en ~/.gnupg
. GPG 2.x siempre inicia un agente proceso si no se está ejecutando.
Puede iniciar el agente simplemente ejecutando gpg-agent
. Si desea mantener un proceso de agente como parte de su sesión, puede reemplazar la invocación de su administrador de sesión por gpg-agent my-session-manager
; algunas distribuciones configuran esto automáticamente. GPG iniciará automáticamente el agente, y GPG 2.1 encontrará además un agente en ejecución sin necesidad de una variable de entorno, por lo que no es necesario que lo inicie de esta manera a menos que use una versión anterior de GPG o use el agente para almacenar otros tipos de claves como SSH.
Puede enviar al agente comandos con los gpg-connect-agent
comando de shell. Envíe el kill
comando a matar el proceso del agente (o enviarle una señal).
Gpg-agent se envía con GPG en sí. Algunas distribuciones lo empaquetan por separado.
Comentarios
- " Cuando un proceso GPG necesita la clave, se pone en contacto con el programa gpg-agent en ejecución a través de un socket y solicita la clave. Si el proceso del agente tiene la clave, lo proporciona a gpg. " Ligeramente engañoso. El agente no proporciona una clave para el proceso del cliente. En cambio, realiza orms acciones utilizando la clave, en nombre del proceso del cliente. (El cliente proporciona al agente algo para firmar, cifrar o descifrar, y el agente lo hace). Cuando utiliza un agente, su software de cliente SSH y GPG nunca obtiene acceso a la clave real.
- " Gpg-agent no puede ' hacer esto todavía, es una función planificada. SSH ha tenido reenvío de agentes durante mucho tiempo. (Esta es una razón para no usar gpg-agent para las claves SSH). " No es del todo cierto. gpg-agent funciona bien con el reenvío de agentes SSH. Lo uso todos los dias. El cliente SSH maneja el reenvío, gpg-agent no está realmente involucrado en eso. Lo que no es compatible es que GPG mismo hable con un agente de forma remota.