
Tengo una Yubikey4 cargada con mi clave gpg, que actúa como una tarjeta inteligente. Puedo hacerlo gpg2 card-status
y 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_SOCK
en 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 -vvv
me 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-support
la 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-agent
el 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.options
como 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.
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 .sh
extensión.