Zum Inhalt springen

SSH Key

Es gibt unterschiedliche SSH Key Typen, die sich vor allem in Sicherheit und Komfort unterscheiden.

Zwei relevante sind:

  • Standard SSH-Keys (z.B. ed25519)
  • Hardwarebasierte SSH-Keys über FIDO2 / Security Keys (z.B. ed25519-sk)

Komfort: sehr hoch

  • Einfach zu erzeugen und zu nutzen
  • Breite Unterstützung in SSH-Implementierungen

Sicherheit: gut

  • Mit Passphrase und ssh-agent ein solides Sicherheitsniveau
  • Der private Schlüssel liegt jedoch auf dem System und ist grundsätzlich exportierbar und kopierbar

Der private Schlüssel wird nicht auf dem Host-System gespeichert, sondern verbleibt auf einem Hardware-Token (z.B. YubiKey).

Sicherheit: sehr hoch

  • Private Key verlässt das Gerät nie
  • Authentifizierung erfordert physische User Presence (Touch)
  • Optional zusätzlich User Verification (PIN)
  • Sehr guter Schutz gegen Key-Diebstahl aus Laptop, Backup oder Container

Komfort: mittel

  • Etwas mehr Setup erforderlich
  • Nicht jede Toolchain oder CI-Umgebung unterstützt Hardware-Keys gleich gut

Ein Standard SSH-Key kann wie folgt erzeugt werden:

Terminal-Fenster
ssh-keygen -t ed25519 \
-f ~/.ssh/github_ed25519 \
-C "GitHub Account"

Der SSH Key sollte mit einer Passphrase erstellt werden. Anschließend kann der Public Key im Git-Hosting-Account (z.B. GitHub) hinterlegt werden.

Terminal-Fenster
pbcopy < ~/.ssh/github_ed25519.pub

Ein Hardwarebasierter SSH-Key wird beispielsweise wie folgt erzeugt:

Terminal-Fenster
ssh-keygen -t ed25519-sk \
-O resident \
-O verify-required \
-f ~/.ssh/github_ed25519_sk \
-C "GitHub Account"

Je nach macOS- oder OpenSSH-Version kann die Nutzung von FIDO-/Hardware-Schlüsseln eingeschränkt sein, so dass unter Umständen ein aktueller SSH-Client benötigt wird.

Falls erforderlich kann:

  • eine aktuellere OpenSSH-Version installiert werden (z.B. über Homebrew)
  • oder auf klassische SSH-Schlüssel zurückgegriffen werden

  • ed25519 verwendet den ed25519-Algorithmus für den SSH-Schlüssel
  • -f ~/.ssh/github_ed25519 legt den Speicherort und Namen des privaten Schlüssels fest
    • privater Schlüssel: ~/.ssh/github_ed25519
    • öffentlicher Schlüssel: ~/.ssh/github_ed25519.pub
  • -C "GitHub Account" fügt einen Kommentar zum Schlüssel hinzu
    • wird im öffentlichen Schlüssel gespeichert
    • dient für den Zweck des Schlüssels
  • ed25519-sk verwendet einen FIDO2-/Security-Key-basierten SSH Key Typ
  • resident speichert den Schlüssel als resident credential auf dem Token
    • der Schlüssel kann vom Token wieder auf ein anderes System geladen werden
    • ohne resident müsste der öffentliche Schlüssel separat gesichert werden
  • verify-required erzwingt User Verification
    • verlangt zusätzlich zur Token-Präsenz eine PIN
  • -f ~/.ssh/github_ed25519_sk legt den Dateipfad für die lokale SSH-Key-Referenz fest
    • enthält keinen vollständigen privaten Schlüssel, sondern eine Referenz auf den Hardware-Key
    • öffentlicher Schlüssel: ~/.ssh/github_ed25519_sk.pub
  • -C "GitHub Account" fügt einen Kommentar zum Schlüssel hinzu
    • wird im öffentlichen Schlüssel gespeichert
    • dient für den Zweck des Schlüssels