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) est un protocole réseau utilisé pour accéder et gérer en toute sécurité des systèmes distants tels que des serveurs ou des référentiels de code (par exemple GitLab, GitHub). Il utilise des paires de clés cryptographiques pour l’authentification, ce qui permet des connexions sans mot de passe avec une grande sécurité. Avec une Nitrokey, la clé SSH privée est générée et stockée directement sur l’appareil, elle ne quitte donc jamais le matériel. Chaque connexion nécessite de toucher la Nitrokey, ce qui ajoute une simple confirmation physique qui protège contre les accès non autorisés.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Ouvrez un terminal et créez votre clé SSH. Remplacez "your_comment" par une étiquette pour l’identifier (par exemple, « Nitrokey GitLab »). Par défaut, la clé est une clé non-résidente, ce qui signifie qu’une poignée de clé locale est stockée dans ~/.ssh/ tandis que la clé privée reste en sécurité sur la Nitrokey. Utilisez l’option -O resident si vous voulez que la clé soit portable d’un système à l’autre.

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

    ou pour créer une clé de résident

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

    Note

    Les clés résidentes peuvent ensuite être répertoriées et importées sur un autre système avec :

    ssh-keygen -K
    
  3. Lors de la génération de la clé, il peut également vous être demandé de définir une phrase de passe **** . Cette phrase de passe crypte la poignée de clé locale stockée dans ~/.ssh/ (pas la clé privée de la Nitrokey, qui reste toujours en sécurité à l’intérieur de l’appareil). La phrase de passe est différente du code PIN de l’appareil FIDO2. Le code PIN protège la clé physique elle-même, tandis que la phrase de passe protège votre fichier de clé publique SSH local. Nous recommandons d’utiliser une phrase de passe pour protéger uniquement les clés non résidentes.

  4. Lorsque l’on vous demande un chemin d’accès, acceptez l’option par défaut (~/.ssh/id_ed25519_sk) ou choisissez un nom personnalisé comme id_ed25519_sk_gitlab.

  5. Si la Nitrokey clignote, confirmez l’opération en la touchant.

Les fichiers suivants seront éventuellement créés. Les noms des fichiers peuvent être différents si vous avez spécifié un nom personnalisé lors de la génération de la clé.

~/.ssh/id_ed25519_sk → poignée de la clé privée (stockée en toute sécurité sur la Nitrokey)

~/.ssh/id_ed25519_sk.pub → fichier de clés publiques

img0

Adding Your Public Key

Une fois la paire de clés SSH générée, la clé publique doit être ajoutée au service ou au serveur auquel vous souhaitez accéder.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Exemple de sortie (ne pas utiliser cette touche): :

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Copiez la sortie et ajoutez-la aux paramètres de la clé SSH de votre compte. Voir GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> ou GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account> pour les étapes détaillées. Pour activer l’accès au serveur distant SSH, ajoutez votre clé publique au fichier ~/.ssh/authorized_keys de votre compte utilisateur sur le serveur SSH.