YubiKey für SSH und GitHub: Der technische Leitfaden für Entwickler
Dein privater SSH-Schlüssel befindet sich in einer reinen Textdatei in ~/.ssh/. Wenn jemand deinen Laptop hackt oder ihn mit Malware infiziert, kann er ihn in Sekunden kopieren. Er braucht weder dein Passwort noch deinen Fingerabdruck.
Ein YubiKey ändert das. Der private Schlüssel verlässt die Hardware nie — nicht einmal du kannst ihn exportieren. Ohne den physischen Schlüssel im USB-Anschluss oder in der Nähe von NFC ist keine Authentifizierung möglich.
- Ein SSH-Schlüssel, der durch FIDO2-Hardware gestützt wird
- Signierung von Git-Commits mit demselben Schlüssel
- YubiKey als Sicherheitsschlüssel auf GitHub (2FA)
Warum sich das Bedrohungsmodell ändert
Ein normaler SSH-Schlüssel ist eine Datei. Sie kann kopiert, in einem fehlerhaft konfigurierten Backup durchgesickert oder durch Malware gestohlen werden, die die Festplatte ausliest.
Ein SSH-Schlüssel, der durch YubiKey gestützt wird (-sk, von "security key"), wird im FIDO2-Chip generiert. Das System speichert nur eine Referenz. Ohne den angeschlossenen physischen Schlüssel ist diese Referenz nutzlos.
Außerdem kannst du eine Berührungsbestätigung bei jeder Verwendung erzwingen. Auch wenn jemand Remote-Zugriff auf deinen Computer hat, müsste er den YubiKey physisch berühren, um sich zu authentifizieren.
Generiere einen SSH-Schlüssel mit YubiKey-Unterstützung
Du benötigst OpenSSH 8.2 oder höher. Es ist in macOS und den meisten modernen Linux-Distributionen enthalten. Unter Windows verwendest du den integrierten OpenSSH-Client oder WSL.
Führe ssh-keygen -t ed25519-sk -O resident -O verify-required -C "deine-email@domain.com" aus. Die Option resident speichert den Schlüssel auch auf der YubiKey, nicht nur auf deiner Festplatte.
Das Terminal fragt dich nach der YubiKey-PIN und dann nach dem Berühren des Sensors. So wird das Schlüsselpaar im Chip generiert.
id_ed25519_sk.pub wird in ~/.ssh/ generiert. Das ist der Schlüssel, den du zu GitHub, GitLab oder zum authorized_keys deines Servers hinzufügst.
Verbinde dich wie gewohnt per SSH. Das System fragt dich, den YubiKey zu berühren, bevor du dich authentifizierst.
Mit -O resident kannst du den Schlüssel mit ssh-keygen -K direkt vom YubiKey auf einem neuen Computer wiederherstellen. Du musst ihn nicht von Grund auf neu generieren.
Signiere deine Git-Commits mit demselben Schlüssel
Seit Git 2.34 kannst du Commits mit einem SSH-Schlüssel statt GPG signieren. Es ist derselbe YubiKey, ohne ein zweites Signatursystem einzurichten.
Führe git config --global gpg.format ssh aus.
Führe git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub aus.
Führe git config --global commit.gpgsign true aus. Jeder Commit erfordert eine YubiKey-Berührung.
Unter Settings → SSH and GPG keys → New SSH key, lade denselben öffentlichen Schlüssel hoch, aber als Typ Signing Key, nicht Authentication Key.
Ab jetzt werden deine Commits als Verified auf GitHub angezeigt. Jeder kann überprüfen, dass sie von deinem physischen Schlüssel stammen, nicht nur von deinem Benutzernamen.
Aktiviere den YubiKey als 2FA auf GitHub
Settings → Password and authentication → Security keys → Add.
Per USB oder NFC, je nach Modell. GitHub erkennt ihn als WebAuthn/FIDO2-Schlüssel.
Bestätige die Registrierung. Ab jetzt erfordert der Login den physischen Schlüssel, keinen temporären Code.
GitHub erlaubt die Hinzufügung mehrerer Schlüssel als 2FA-Methode. Registriere von Anfang an einen primären und einen Backup-Schlüssel.
YubiKey-Modelle, die mit diesem Workflow kompatibel sind
| Modell | Anschluss | SSH (FIDO2) | 2FA GitHub |
|---|---|---|---|
| YubiKey 5 NFC | USB-A + NFC | ✓ | ✓ |
| YubiKey 5C NFC | USB-C + NFC | ✓ | ✓ |
| Security Key NFC | USB-A + NFC | ✓ | ✓ |
| Security Key C NFC | USB-C + NFC | ✓ | ✓ |
Alle vier Modelle verwenden das FIDO2-Protokoll zum Generieren von -sk-Schlüsseln, daher funktioniert der SSH- und GitHub-2FA-Workflow auf allen gleich. Der Unterschied liegt im physischen Anschluss deines Computers.
So organisierst du deinen Hauptschlüssel und dein Backup
Wenn du deinen einzigen YubiKey verlierst, verlierst du den Zugriff auf SSH, deine signierten Commits und dein GitHub-Login. Registriere immer einen zweiten Schlüssel und bewahre ihn an einem anderen Ort als den Hauptschlüssel auf.
Kartenhülse mit 2 Slots
Trage deinen Hauptschlüssel und dein Backup zusammen im Kreditkarten-Format. In der EU (Spanien) hergestellt.
Schlüsselanhänger mit Lanyard
Für den Schlüssel, den du täglich verwendest. NFC funktioniert ohne Herausnehmen aus der Hülle. In der EU (Spanien) hergestellt.
Häufig gestellte Fragen
Brauche ich unbedingt zwei YubiKeys?
Nicht zwingend, aber es ist empfehlenswert. Ohne einen registrierten Backup-Schlüssel bist du bei einem Fehler oder Verlust ohne SSH- und GitHub-Zugriff, bis du eine andere Wiederherstellungsmethode verwendest.
Funktioniert es unter Windows, macOS und Linux gleich?
Ja, solange du OpenSSH 8.2 oder höher hast. macOS und aktuelle Linux-Distributionen enthalten es standardmäßig. Unter Windows verwendest du den integrierten OpenSSH-Client oder WSL.
Kann ich denselben YubiKey für SSH und mein Gmail verwenden?
Ja. Ein YubiKey unterstützt mehrere FIDO2-Anmeldedaten — eine pro Service, bei dem du ihn registrierst — SSH, GitHub, Gmail und andere WebAuthn-kompatible Konten.
Was passiert, wenn ich den YubiKey verliere, mit dem ich Commits signiert habe?
Die bereits signierten Commits bleiben gültig. Um weiterhin zu signieren, registriere deinen Backup-Schlüssel als neuen Signing Key auf GitHub und aktualisiere user.signingkey in deiner Git-Konfiguration.
Lohnt es sich, SSH und GitHub zu YubiKey zu migrieren?
Wenn du SSH-Zugriff auf Produktionsserver hast oder Repositorys mit Mitarbeitern verwaltest, ja. Der private Schlüssel wird nicht länger eine kopierbare Datei, sondern hängt von physischer Hardware ab.
Die realen Kosten entstehen nicht durch den Schlüssel selbst, sondern dadurch, dass du kein organisiertes Backup hast. Löse das von Tag eins.
Als Amazon-Partner verdiene ich an qualifizierten Käufen.