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) is a network protocol used to securely access and manage remote systems such as servers or code repositories. It uses cryptographic key pairs for authentication, allowing passwordless logins with strong security.

With a Nitrokey, the private SSH key is generated and stored directly on the device, so it never leaves the hardware. Each login requires you to touch the Nitrokey, adding a simple physical confirmation that protects against unauthorized access. For example, when connecting to a server, GitLab, or GitHub.

Non-Discoverable Credentials

Mitteteavitatav volikiri on vaikimisi volikirja tüüp, mis luuakse, kui kasutaja registreerib oma Nitrokey FIDO2/WebAuthn-i toetavas autentimissüsteemis. Autentimissüsteem salvestab võtmekäepidemet, samas kui privaatne võti jääb turvaliselt Nitrokey’sse. See konfiguratsioon ei kasuta Nitrokey’s salvestusruumi ja sõltub sellest, et autentimissüsteem annab võtmekäepideme sisselogimise ajal. Nitrokey FIDO2 PIN-kood kontrollib juurdepääsu Nitrokey’le ja autoriseerib kõik isiklike võtmetega seotud toimingud.

Discoverable Credentials

Avastatav volikiri salvestatakse otse Nitrokey’s, sealhulgas kogu volikirja teave ja autentimiseks vajalikud metaandmed. See võimaldab autentimissüsteemil autentimisdokumendi automaatselt leida ilma välise võtmekäepidemeta ja võimaldab kasutajanimevaba autentimist. Avastatavad volikirjad on kaitstud FIDO2 PIN-koodiga, mis lubab nende kasutamist ja tagab, et ainult volitatud kasutaja saab neile ligi. Iga volikiri hõlmab tavaliselt mõnisada baiti turvalist mälu. Volituste koguarv sõltub Nitrokey mudelist ja püsivara versioonist, tavaliselt jääb see 25 ja 100 kirje vahele.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Open a terminal and create your SSH key. Replace "your_comment" with a label to identify it (e.g., „Nitrokey GitLab“). By default, the key is created as a non-discoverable credential. In this case, a local key handle is stored in ~/.ssh/ while the private key remains on the Nitrokey. This means the key is tied to the system where it was generated, since the local key handle file is required for authentication. Use the -O resident option to create a discoverable credential. In this case, the credential is stored on the Nitrokey, making it portable and usable across different systems without copying any local files.

    Non-discoverable credential:

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

    Discoverable credential:

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

    Märkus

    Discoverable credentials can later be listed and imported on another system with:

    ssh-keygen -K
    
  3. During key generation, you may also be asked to set a passphrase. This passphrase encrypts the local key handle stored in ~/.ssh/ (not the private key on the Nitrokey, which always stays securely inside the device). The passphrase is different from the FIDO2 device PIN. The PIN protects the physical key itself, while the passphrase protects your local SSH public key file. We recommend to use a passphrase to protect non-discoverable keys only.

  4. Kui teil palutakse faili teekonda, võtke vastu vaikimisi valik (~/.ssh/id_ed25519_sk) või valige kohandatud nimi, näiteks id_ed25519_sk_gitlab.

  5. Kui Nitrokey vilgub, kinnitage toimingut, puudutades seda.

  6. Lõpuks luuakse järgmised failid. Failide nimed võivad erineda, kui määrasite võtme genereerimisel kohandatud nime.

    ~/.ssh/id_ed25519_sk → privaatvõtme käepide (salvestatud turvaliselt Nitrokey’s)

    ~/.ssh/id_ed25519_sk.pub → avaliku võtme fail

    img0

Adding Your Public Key

Kui teie SSH-võtmepaar on loodud, tuleb avalik võti lisada teenusele või serverile, millele soovite juurdepääsu saada.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Näidisväljund (ärge kasutage seda võtit):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Kopeeri väljund ja lisa see oma konto SSH-võtme seadistustesse.

    See GitLab or GitHub for detailed steps.

    SSH-kaugserverile juurdepääsu võimaldamiseks lisage oma avalik võti SSH-serveri kasutajakonto faili ~/.ssh/authorized_keys.