SSH Authentication with FIDO2

Compatible Nitrokeys

3A/C/Mini

Passkey

HSM 2

Pro 2

FIDO2

Storage 2

Start

U2F

active

active

inactive

inactive

active

inactive

inactive

inactive

SSH (Secure Shell) es un protocolo de red utilizado para acceder y gestionar de forma segura sistemas remotos como servidores o repositorios de código (por ejemplo, GitLab, GitHub). Utiliza pares de claves criptográficas para la autenticación, permitiendo inicios de sesión sin contraseña con una fuerte seguridad. Con Nitrokey, la clave SSH privada se genera y almacena directamente en el dispositivo, por lo que nunca sale del hardware. Cada inicio de sesión requiere tocar la Nitrokey, lo que añade una simple confirmación física que protege contra el acceso no autorizado.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Abra un terminal y cree su clave SSH. Reemplace "your_comment" con una etiqueta para identificarla (por ejemplo, «Nitrokey GitLab»). Por defecto, la clave es una clave no residente, lo que significa que la clave local se almacena en ~/.ssh/ mientras que la clave privada permanece segura en la Nitrokey. Utilice la opción -O resident si desea que la clave sea portable entre sistemas.

    ssh-keygen -t ed25519-sk -C "your_comment"
    

    o para crear una clave residente

    ssh-keygen -t ed25519-sk -O resident -C "your_comment"
    

    Nota

    Las claves residentes pueden listarse e importarse posteriormente en otro sistema con:

    ssh-keygen -K
    
  3. Durante la generación de la clave, también se le puede pedir que establezca una frase de contraseña. Esta frase de contraseña cifra la clave local almacenada en ~/.ssh/ (no la clave privada de Nitrokey, que siempre permanece segura dentro del dispositivo). La frase de contraseña es diferente del PIN del dispositivo FIDO2. El PIN protege la clave física en sí, mientras que la frase de contraseña protege su archivo de clave pública SSH local. Recomendamos utilizar una frase de contraseña sólo para proteger claves no residentes.

  4. Cuando se le pida una ruta de archivo, acepte la opción por defecto (~/.ssh/id_ed25519_sk) o elija un nombre personalizado como id_ed25519_sk_gitlab.

  5. Si la Nitrokey parpadea, confirme la operación tocándola.

Finalmente se crearán los siguientes archivos. Los nombres de los archivos pueden diferir si especificó un nombre personalizado al generar la clave.

~/.ssh/id_ed25519_sk → Mango de la clave privada (almacenada de forma segura en la Nitrokey).

~/.ssh/id_ed25519_sk.pub → archivo de clave pública

img0

Adding Your Public Key

Una vez generado su par de claves SSH, debe añadir la clave pública al servicio o servidor al que desea acceder.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Ejemplo de salida (no utilice esta tecla):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Copia el resultado y añádelo a la configuración de la clave SSH de tu cuenta. Consulta GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> o GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account> para ver los pasos detallados. Para habilitar el acceso remoto SSH al servidor, añade tu clave pública al archivo ~/.ssh/authorized_keys de tu cuenta de usuario en el servidor SSH.