¿Por qué gpg-agent crea varios sockets?

Aug 20 2020

cuando se usa gpgcon gpg-agent, los siguientes sockets se crean en mi ~/.gnupgdirectorio:

S.gpg-agent
S.gpg-agent.browser
S.gpg-agent.extra
S.gpg-agent.ssh

Supongo que S.gpg-agentes el gpg-agentenchufe estándar . Pero, ¿para qué sirven los demás?

No estoy usando gpg con ssh o gpg con el navegador.

¿Dónde está configurado, que estos se creen automáticamente?

¿Puedo desactivarlos?

Solo necesito el estándar S.gpg-agent

Estoy usando gnupg 2.2.12Debian Buster.

Respuestas

5 PatrickMevzek Aug 21 2020 at 18:09

El gpg-agentpuede tener múltiples personalidades y ofrecer diferentes servicios.

Por ejemplo, puede dejar de ssh-agentcorrer en su caja y usarlo gpg-agentcomo un reemplazo directo ... siempre que use el conector adecuado, S.gpg-agent.sshporque tiene que implementar el protocolo adecuado que sshespera discutir. ¿Por qué podría ser tan útil? Por ejemplo, hasta hace muy poco, sshno podía usar claves almacenadas en FIDO2 / U2F (como Yubikeys), esto solo se agregó en 8.2 lanzado no hace mucho tiempo, lo que hace las cosas muy simples como se explica enhttps://blog.snapdragon.cc/2020/02/23/direct-fido2-u2f-support-in-openssh-8-2-on-macos/

Antes de eso, gpg-agentse usaría, porque gpgtiene soporte para U2F manejado como una tarjeta inteligente. Esta es una de la documentación canónica sobre cómo hacer eso:https://florin.myip.org/blog/easy-multifactor-authentication-ssh-using-yubikey-neo-tokens

Ahora volvamos a gpg-agent, su manual completo está enhttps://www.gnupg.org/documentation/manuals/gnupg/Invoking-GPG_002dAGENT.html#Invoking-GPG_002dAGENT

Puedes encontrar todas las opciones en https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html#Agent-Options que se puede poner en un archivo de configuración, normalmente ~/.gnupg/gpg-agent.conf

Podemos aprender por ejemplo:

  1. sobre .extrauno, podemos aprender tanto cómo deshabilitarlo como para qué se usa:
--extra-socket name

El socket adicional se crea por defecto, puede usar esta opción para cambiar el nombre del socket. Para deshabilitar la creación del socket, use "none" o "/ dev / null" para el nombre.

También escuche las conexiones nativas de agente gpg en el socket dado. El uso previsto para este socket adicional es configurar un reenvío de socket de dominio Unix desde una máquina remota a este socket en la máquina local. Un gpg que se ejecuta en la máquina remota puede conectarse al agente gpg local y usar sus claves privadas. Esto permite descifrar o firmar datos en una máquina remota sin exponer las claves privadas a la máquina remota.

  1. Para soporte ssh, el .sshindicado:

--enable-ssh-support

--enable-putty-support

El protocolo del agente OpenSSH siempre está habilitado, pero gpg-agent solo establecerá la variable SSH_AUTH_SOCK si se proporciona este indicador.

En este modo de operación, el agente no solo implementa el protocolo gpg-agent, sino también el protocolo de agente usado por OpenSSH (a través de un socket separado). En consecuencia, debería ser posible utilizar el agente gpg como un reemplazo directo del conocido agente ssh.

  1. Para el conector del navegador y más información, puede utilizar https://wiki.archlinux.org/index.php/GnuPG#gpg-agent que dice:

gpg-agentse utiliza principalmente como demonio para solicitar y almacenar en caché la contraseña del llavero. Esto es útil si se usa GnuPG desde un programa externo como un cliente de correo. gnupg viene con sockets de usuario systemd que están habilitados por defecto. Estas tomas son gpg-agent.socket, gpg-agent-extra.socket, gpg-agent-browser.socket, gpg-agent-ssh.sockety dirmngr.socket.

gpg-agent.socketGpg usa el main para conectarse al gpg-agentdemonio.

El uso previsto para el gpg-agent-extra.socketen un sistema local es configurar un reenvío de socket de dominio Unix desde un sistema remoto. Esto permite utilizar gpg en el sistema remoto sin exponer las claves privadas al sistema remoto. Consulte gpg-agent (1) para obtener más detalles.

El gpg-agent-browser.socketpermite a los navegadores web para acceder al daemon gpg-agent.

El gpg-agent-ssh.socketpuede ser utilizado por SSH a las claves SSH caché agregadas por el programa ssh-add. Consulte el agente #SSH para conocer la configuración necesaria.

El dirmngr.socketinicia un demonio GnuPG que maneja las conexiones a los servidores de claves.

Por lo tanto, no hay nada de malo en tenerlos incluso si no los usa. Si realmente desea asegurarse de que no estén allí, puede intentar poner lo siguiente en un archivo de configuración de gpg-agent:

extra-socket /dev/null
browser-socket /dev/null

No probé eso, la documentación no habla, browser-socketpero esta pregunta anterior sí:https://askubuntu.com/questions/777900/how-to-configure-gnupgs-s-gpg-agent-socket-location