Cómo iniciar correctamente gpg-agent en Ubuntu 16.04

Cómo iniciar correctamente gpg-agent en Ubuntu 16.04

Tengo una Yubikey4 cargada con mi clave gpg, que actúa como una tarjeta inteligente. Puedo hacerlo gpg2 card-statusy me da todo el asunto mostrando todas mis subclaves y todo está bien.

Luego quise usar gpg-agent para realizar ssh en hosts remotos usando mi clave gpg. Agregué lo siguiente a mi~/.gnupg/gpg-agent.conf

enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60

También configuré SSH_AUTH_SOCKen mi .bashrc así:

export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh

Si luego reinicio mi máquina, la clave se agrega y es visible conssh-add -l

4096 SHA256....... cardno: ..... (RSA)

Pero cualquier intento de ssh a un servidor remoto simplemente se bloquea, ssh -vvvme dice que la máquina intenta firmar y enviar la clave, pero el agente rechaza la operación.

Si luego ejecuto un script que hice usando varias fuentes, todo funciona.

   killall gpg
   export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keet-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses 

Intenté implementar esto usando bashrc, ejecutándolo con mi deskopt-manager y una tarea systemd de usuario sin éxito.

¿Alguien puede ayudarme a descubrir cómo iniciar esto automáticamente al iniciar sesión, sin la necesidad de ejecutar "mi script"?

Respuesta1

Respuesta corta :

Ejecutar como root:

$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
    ... comment out "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring

Cierre sesión en su escritorio y vuelva a iniciar sesión, y verifique que $SSH_AUTH_SOCK esté apuntando a su agente gpg.

Explicación :

De forma predeterminada, gpg-agent no habilita su agente SSH. Esto se hace pasando --enable-ssh-supportla línea de comandos o agregando una línea a un archivo de configuración como se muestra arriba.

En segundo lugar, el problema de otros agentes SSH. El agente OpenSSH se inicia de forma predeterminada, configurado desde /etc/X11/Xsession.d/90x11-common_ssh-agentel paquete x11-common. Si ejecuta GNOME, el agente GNOME Keyring también se está ejecutando. Ambos interferirán con nuestro agente GnuPG.

La desactivación del agente OpenSSH se realiza editando /etc/X11/Xsession.optionscomo se indica arriba.

Deshabilitar el agente GNOME Keyring es potencialmente un poco más complicado. Usando Xfce, uno puede desinstalar el paquete libpam-gnome-keyring y asegurarse de que Xfce no inicie los servicios GNOME (Configuración → Sesión e inicio → Avanzado → Iniciar servicios GNOME al inicio– desmarque si está marcado).

Solución de problemas

Si después de todo este SSH_AUTH_SOCK todavía no apunta a su agente gpg, es posible que tenga otro agente todavía interfiriendo con su agente GnuPG. La variable SSH_AGENT_PID debe contener el PID del proceso del agente, lo que ayudará a identificar ese agente.

Fuente : Mi configuración perfecta del agente GnuPG/SSH

Respuesta2

Pon el guión /etc/profile.d. Asegúrese de que el bit ejecutable esté configurado ( chmod +x) y que el archivo tenga una .shextensión.

información relacionada