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)
SSH Keys Typen
Abschnitt betitelt „SSH Keys Typen“Standard SSH-Key (ed25519)
Abschnitt betitelt „Standard SSH-Key (ed25519)“Komfort: sehr hoch
- Einfach zu erzeugen und zu nutzen
- Breite Unterstützung in SSH-Implementierungen
Sicherheit: gut
- Mit Passphrase und
ssh-agentein solides Sicherheitsniveau - Der private Schlüssel liegt jedoch auf dem System und ist grundsätzlich exportierbar und kopierbar
YubiKey / FIDO2-Security-Key (ed25519-sk)
Abschnitt betitelt „YubiKey / FIDO2-Security-Key (ed25519-sk)“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
SSH Key erzeugen
Abschnitt betitelt „SSH Key erzeugen“Standard SSH-Key
Abschnitt betitelt „Standard SSH-Key“Ein Standard SSH-Key kann wie folgt erzeugt werden:
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.
pbcopy < ~/.ssh/github_ed25519.pubYubiKey / FIDO2-Security-Key
Abschnitt betitelt „YubiKey / FIDO2-Security-Key“Ein Hardwarebasierter SSH-Key wird beispielsweise wie folgt erzeugt:
ssh-keygen -t ed25519-sk \ -O resident \ -O verify-required \ -f ~/.ssh/github_ed25519_sk \ -C "GitHub Account"Einschränkungen bei FIDO / Hardware SSH Keys
Abschnitt betitelt „Einschränkungen bei FIDO / Hardware SSH Keys“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
Technische Erläuterung
Abschnitt betitelt „Technische Erläuterung“Standard SSH-Key
Abschnitt betitelt „Standard SSH-Key“ed25519verwendet den ed25519-Algorithmus für den SSH-Schlüssel-f ~/.ssh/github_ed25519legt den Speicherort und Namen des privaten Schlüssels fest- privater Schlüssel:
~/.ssh/github_ed25519 - öffentlicher Schlüssel:
~/.ssh/github_ed25519.pub
- privater Schlüssel:
-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
YubiKey / FIDO2-Security-Key
Abschnitt betitelt „YubiKey / FIDO2-Security-Key“ed25519-skverwendet einen FIDO2-/Security-Key-basierten SSH Key Typresidentspeichert den Schlüssel als resident credential auf dem Token- der Schlüssel kann vom Token wieder auf ein anderes System geladen werden
- ohne
residentmüsste der öffentliche Schlüssel separat gesichert werden
verify-requirederzwingt User Verification- verlangt zusätzlich zur Token-Präsenz eine PIN
-f ~/.ssh/github_ed25519_sklegt 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