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) ist ein Netzwerkprotokoll für den sicheren Zugriff auf und die Verwaltung von entfernten Systemen wie Servern oder Code-Repositories (z. B. GitLab, GitHub). Es verwendet kryptografische Schlüsselpaare zur Authentifizierung und ermöglicht passwortlose Anmeldungen mit hoher Sicherheit. Mit einem Nitrokey wird der private SSH-Schlüssel direkt auf dem Gerät erzeugt und gespeichert, so dass er die Hardware nie verlässt. Bei jeder Anmeldung müssen Sie den Nitrokey berühren, was eine einfache physische Bestätigung darstellt, die vor unbefugtem Zugriff schützt.

Generating SSH Key

  1. Insert the Nitrokey into your computer.

  2. Öffnen Sie ein Terminal und erstellen Sie Ihren SSH-Schlüssel. Ersetzen Sie "your_comment" durch eine Bezeichnung, um ihn zu identifizieren (z. B. „Nitrokey GitLab“). Standardmäßig ist der Schlüssel ein nicht-ortsgebundener Schlüssel, d. h. ein lokales Schlüsselhandle wird in ~/.ssh/ gespeichert, während der private Schlüssel sicher auf dem Nitrokey bleibt. Verwenden Sie die Option -O resident, wenn Sie möchten, dass der Schlüssel systemübergreifend portabel ist.

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

    oder um einen residenten Schlüssel zu erstellen

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

    Bemerkung

    Residente Schlüssel können später aufgelistet und auf einem anderen System mit importiert werden:

    ssh-keygen -K
    
  3. Während der Schlüsselgenerierung werden Sie möglicherweise auch aufgefordert, eine Passphrase festzulegen. Diese Passphrase verschlüsselt den lokalen Schlüsselhandle, der in ~/.ssh/ gespeichert ist (nicht den privaten Schlüssel auf dem Nitrokey, der immer sicher im Gerät bleibt). Die Passphrase unterscheidet sich von der FIDO2-Geräte-PIN. Die PIN schützt den physischen Schlüssel selbst, während die Passphrase Ihre lokale öffentliche SSH-Schlüsseldatei schützt. Wir empfehlen die Verwendung einer Passphrase nur zum Schutz von nicht-residenten Schlüsseln.

  4. Wenn Sie nach einem Dateipfad gefragt werden, akzeptieren Sie die Standardoption (~/.ssh/id_ed25519_sk) oder wählen Sie einen eigenen Namen wie id_ed25519_sk_gitlab.

  5. Wenn der Nitrokey blinkt, bestätigen Sie den Vorgang, indem Sie ihn berühren.

Schließlich werden die folgenden Dateien erstellt. Die Dateinamen können abweichen, wenn Sie bei der Erstellung des Schlüssels einen eigenen Namen angegeben haben.

~/.ssh/id_ed25519_sk → Handle zum privaten Schlüssel (sicher auf dem Nitrokey gespeichert)

~/.ssh/id_ed25519_sk.pub → Datei mit öffentlichem Schlüssel

img0

Adding Your Public Key

Sobald Ihr SSH-Schlüsselpaar erzeugt ist, muss der öffentliche Schlüssel zu dem Dienst oder Server hinzugefügt werden, auf den Sie zugreifen möchten.

  1. Display your public key:

    cat ~/.ssh/id_ed25519_sk.pub
    

    Beispielausgabe (diese Taste nicht verwenden):

    sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG7wZW4zc2guY29tAAAAILeZl6r07HV4i1rK07OfLqD3J4IzX2q0lB6Ok0pdxoG5AAAABHNzaDo= your_comment
    
  2. Kopieren Sie die Ausgabe und fügen Sie sie zu den SSH-Schlüsseleinstellungen Ihres Kontos hinzu. Detaillierte Schritte finden Sie unter GitLab <https://docs.gitlab.com/user/ssh/#add-an-ssh-key-to-your-gitlab-account> oder GitHub <https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account>. Um den SSH-Fernzugriff auf den Server zu aktivieren, fügen Sie Ihren öffentlichen Schlüssel in die Datei ~/.ssh/authorized_keys Ihres Benutzerkontos auf dem SSH-Server ein.