YubiKey para SSH y GitHub: la guía técnica para developers
Anleitungen und Tutorials

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.

Das wirst du in dieser Anleitung einrichten
  • 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.

1
Generiere den Resident-Schlüssel

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.

2
Bestätige mit PIN und Berührung

Das Terminal fragt dich nach der YubiKey-PIN und dann nach dem Berühren des Sensors. So wird das Schlüsselpaar im Chip generiert.

3
Kopiere den öffentlichen Schlüssel

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.

4
Teste die Verbindung

Verbinde dich wie gewohnt per SSH. Das System fragt dich, den YubiKey zu berühren, bevor du dich authentifizierst.

Wenn du den Laptop wechselst

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.

1
Aktiviere das SSH-Format für Signaturen

Führe git config --global gpg.format ssh aus.

2
Gib an, welchen Schlüssel zum Signieren verwendet werden soll

Führe git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub aus.

3
Aktiviere automatisches Signieren

Führe git config --global commit.gpgsign true aus. Jeder Commit erfordert eine YubiKey-Berührung.

4
Registriere den Schlüssel als "Signing Key" auf GitHub

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

1
Gehe zu Security keys

Settings → Password and authentication → Security keys → Add.

2
Verbinde oder halte den YubiKey in die Nähe

Per USB oder NFC, je nach Modell. GitHub erkennt ihn als WebAuthn/FIDO2-Schlüssel.

3
Berühre den Sensor, wenn dazu aufgefordert

Bestätige die Registrierung. Ab jetzt erfordert der Login den physischen Schlüssel, keinen temporären Code.

Registriere zwei Sicherheitsschlüssel auf GitHub

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.

Empfohlen Kartenhülse für YubiKey 2 Slots

Kartenhülse mit 2 Slots

Trage deinen Hauptschlüssel und dein Backup zusammen im Kreditkarten-Format. In der EU (Spanien) hergestellt.

Kompatibel mit: YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Bei Amazon ansehen
Schlüsselanhänger mit Lanyard für YubiKey

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.

Kompatibel mit: YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Bei Amazon ansehen

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.

Fazit

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.

Zurück zum Blog