SSH para la administración de servidores#

Esta guía explica cómo preparar su servidor y cliente SSH para utilizarlo con Nitrokey.

El Nitrokey debería tener ya instaladas las claves PGP y el llavero local de GnuPG debería conocer las claves.

Preparación en el cliente#

  • Asegúrese de que ~/.gnupg/gpg.conf contiene “use-agent”

  • Añade soporte ssh a gnupg-agent añadiendo “enable-ssh-support” a ~/.gnupg/gpg-agent.conf

  • Si el archivo no existe todavía, puede crearlo.

  • Añade el siguiente código en algún lugar de tu ~/.bashrc (para la concha de pescado, mira aquí)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
  • Simplemente reinicie su sistema o intente pkill gpg-agent y abra una nueva línea de comandos para asegurarse de que todo está configurado

  • En caso de problemas, por favor intente gpg2 --card-status en el primer uso para asegurarse de que el agente gpg se inicia

Preparación del servidor#

Puede generar un archivo authorized_keys ejecutando

gpg2 --export-ssh-key keyID >> ~/authorized_keys

donde

keyID

es el id de la subclave que se utiliza para la autenticación en su Nitrokey. La Nitrokey ya debe ser conocida por el llavero local de GnuPG. Ahora puedes añadir ese archivo a un servidor remoto’s authorized_keys y cuando te conectes al servidor’se te pedirá un pin en lugar de una frase de contraseña.

Solución de problemas#

Si se le sigue pidiendo una contraseña, asegúrese de que

echo $SSH_AUTH_SOCK

devuelve algo como “/run/user/1000/gnupg/S.gpg-agent.ssh” o “/home/nombredeusuario/.gnupg/.S.gpg-agent.ssh”. Desafortunadamente, hubo algunos cambios en GnuPG en el pasado, por lo que el contenido real puede diferir del sistema y de la versión de GnuPG. En algunos sistemas puede haber incluso múltiples carpetas en esta variable guardada. Tienes que adaptar el código dado arriba en el .bashrc para que la variable SSH_AUTH_SOCK sea correcta. En caso de duda busque “SSH_AUTH_SOCK” en

man gpg-agent

para encontrar el código real de su versión/sistema.

Puede comprobar si tiene un programa “pinentry” instalado a través de su gestor de paquetes. Es posible que tenga que configurarlo en el gpg-agent.conf también. Es posible que tenga que señalar a gpg-agent el TTY correcto.