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) è un protocollo di rete utilizzato per accedere e gestire in modo sicuro sistemi remoti come server o repository di codice (ad esempio GitLab, GitHub). Utilizza coppie di chiavi crittografiche per l’autenticazione, consentendo accessi senza password con una forte sicurezza. Con Nitrokey, la chiave privata SSH viene generata e memorizzata direttamente sul dispositivo, quindi non lascia mai l’hardware. Per ogni accesso è necessario toccare Nitrokey, aggiungendo una semplice conferma fisica che protegge dagli accessi non autorizzati.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Aprire un terminale e creare la chiave SSH. Sostituire "your_comment" con un’etichetta per identificarla (ad esempio, «Nitrokey GitLab»). Per impostazione predefinita, la chiave è una chiave non residente, il che significa che l’handle della chiave locale è memorizzato in ~/.ssh/ mentre la chiave privata rimane al sicuro su Nitrokey. Utilizzare l’opzione -O resident se si desidera che la chiave sia trasferibile da un sistema all’altro.

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

    o per creare una chiave residente

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

    Nota

    Le chiavi residenti possono essere successivamente elencate e importate su un altro sistema con:

    ssh-keygen -K
    
  3. Durante la generazione della chiave, potrebbe essere richiesto di impostare una passphrase. Questa passphrase cripta la chiave locale memorizzata in ~/.ssh/ (non la chiave privata di Nitrokey, che rimane sempre al sicuro all’interno del dispositivo). La passphrase è diversa dal PIN del dispositivo FIDO2. Il PIN protegge la chiave fisica stessa, mentre la passphrase protegge il file della chiave pubblica SSH locale. Si consiglia di utilizzare una passphrase solo per proteggere le chiavi non residenti.

  4. Quando viene richiesto il percorso del file, accettare l’opzione predefinita (~/.ssh/id_ed25519_sk) o scegliere un nome personalizzato come id_ed25519_sk_gitlab.

  5. Se il Nitrokey lampeggia, confermare l’operazione toccandolo.

Alla fine verranno creati i seguenti file. I nomi dei file possono essere diversi se si è specificato un nome personalizzato durante la generazione della chiave.

~/.ssh/id_ed25519_sk → handle della chiave privata (memorizzata in modo sicuro su Nitrokey)

~/.ssh/id_ed25519_sk.pub → file della chiave pubblica

img0

Adding Your Public Key

Una volta generata la coppia di chiavi SSH, la chiave pubblica deve essere aggiunta al servizio o al server a cui si vuole accedere.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Esempio di uscita (non utilizzare questo tasto):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Copiare il risultato e aggiungerlo alle impostazioni della chiave SSH del proprio account. Vedere 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> per i passi dettagliati. Per abilitare l’accesso remoto al server SSH, aggiungere la propria chiave pubblica al file ~/.ssh/authorized_keys del proprio account utente sul server SSH.