Der Artikel dokumentiert die vollständige Abschaffung traditioneller, ungeschützter SSH-Private-Keys auf Festplatten durch den Umstieg auf hardware-gebundene Schlüssel. Der Autor evaluiert drei native beziehungsweise leichtgewichtige Methoden: FIDO2-Sicherheitsschlüssel (YubiKey mit ed25519-sk), Trusted Platform Modules (TPM über ssh-tpm-agent) und den Apple Secure Enclave unter macOS Sequoia. Ziel ist es, Schlüsselexfiltration zu verhindern, während reale Szenarien wie LXC-Container oder SSHFS-Mounts ohne Kompromittierungsrisiko unterstützt werden.
Key Points
Methode 1 (YubiKey): Nutzt native OpenSSH-Unterstützung für ed25519-sk-Schlüssel via ssh-keygen -t ed25519-sk -O resident. Erfordert physische Berührung zur Bestätigung, es sei denn, die Option -O no-touch-required wird explizit gesetzt.
Methode 2 (TPM): Verwendet das Go-Paket ssh-tpm-agent zur TPM-gestützten Schlüsselverwaltung. Im Gegensatz zu YubiKeys wird hier der verschlüsselte Private Key physisch auf der Festplatte gespeichert (.tpm-Endung) und vom TPM entschlüsselt.
Methode 3 (Apple Secure Enclave): Setzt unter macOS Sequoia auf das Smart-Card-Auth-System (sc_auth create-ctk-identity). Durch die Flags -k p-256-ne (nicht exportierbar) und -t bio wird ein an Touch ID gebundener Schlüssel erzeugt, der über SSH_SK_PROVIDER=/usr/lib/ssh-keychain.dylib eingebunden wird.
Einschränkung im Clamshell-Modus: Die Erstellung von Secure-Enclave-Schlüsseln mit Touch-ID-Prüfung (-t bio) schlägt fehl, wenn sich MacBooks im geschlossenen Clamshell-Modus befinden, da physisches Touch ID dort nicht verfügbar ist.
Ausfallsicherheit: Da Hardware-Schlüssel an physische Geräte gebunden sind, kann ein Hardware-Defekt oder -Verlust zum permanenten Ausschluss führen; daher wird die Registrierung mehrerer redundanter Schlüssel in der authorized_keys-Datei empfohlen.
Diskussions-Highlights
FIDO2 vs. PIV (YubiKey): Einige Kommentatoren bevorzugen YubiKeys im PIV-Modus (OpenPGP/Smartcard), um Touch-Eingaben bis zu 15 Sekunden zu cachen (z. B. für Git-Rebases) und Schlüssel auf mehreren YubiKeys zu teilen, kritisieren jedoch die Komplexität der Einrichtung von pcscd.
Resident vs. Non-Resident Keys: Nicht-residentte -sk-Schlüssel speichern verschlüsselte Handle-Dateien auf der Festplatte und erfordern sowohl die Datei als auch den YubiKey, während residentte Schlüssel Metadaten direkt auf dem YubiKey sichern und auf neuen Rechnern via ssh-keygen -K wiederhergestellt werden können.
Alternative Ansätze und Tooling: Nutzer erwähnen den tpm2-pkcs11-Stack als Alternative zu ssh-tpm-agent, Vaultwarden/Bitwarden-CLI zum Laden von Keys direkt über stdin in den ssh-agent sowie Tailscale SSH und Teleport als netzwerkbasierte Authentifizierungsalternativen.
WSL2-Kompatibilität: YubiKeys und TPMs funktionieren unter WSL2 (Windows Subsystem for Linux) derzeit nicht ohne komplexe und teils unsichere Workarounds.
Agent Forwarding und Sprung-Hosts: Das Weiterleiten von Hardware-Keys funktioniert mit ssh -A, erfordert jedoch bei der Nutzung von tmux oft Zusatz-Tools wie socklink, um gebrochene SSH_AUTH_SOCK-Variablen zu reparieren; alternativ vermeidet ProxyJump (-J) das Agent-Forwarding über mehrere Hops hinweg gänzlich.
Glossar
ed25519-sk: Ein moderner, elliptischer Signaturalgorithmus (Ed25519) in Kombination mit Security-Key-Unterstützung (-sk), der private Schlüssel direkt an physische Hardware-Token bindet.
TPM (Trusted Platform Module): Ein dedizierter Kryptografie-Mikrocontroller auf der Hauptplatine eines Computers, der Hardwaresicherheitsfunktionen wie Schlüsselspeicherung und Systemintegritätsprüfungen bereitstellt.
FIDO2 / FIDO: Ein offener Authentifizierungsstandard der FIDO Alliance für passwortlose und phishing-sichere Logins über physische Sicherheitsschlüssel.
Apple Secure Enclave: Ein hardwarebasiertes Sicherheitsuntersystem in Apple-Geräten (iPhone, Mac), das sensible Daten und kryptografische Schlüssel isoliert vom Hauptbetriebssystem verwaltet.
Smart Card Auth: Ein Authentifizierungsframework in macOS, das physische oder virtuelle Smartcards sowie die Secure Enclave zur kryptografischen Anmeldung nutzt.
Clamshell-Modus: Ein Betriebszustand von Apple-Laptops, in dem das Gerät bei geschlossenem Bildschirm und externem Monitor betrieben wird.
SSH-Agent (ssh-agent): Ein Hintergrundprogramm in Unix-Systemen, das unverschlüsselte Private Keys im Arbeitsspeicher vorhält, damit Nutzer sich nicht bei jeder Verbindung erneut authentifizieren müssen.
SSHFS (Secure Shell Filesystem): Ein Dateisystem-Client, der das Einbinden von entfernten Verzeichnissen über eine sichere SSH-Verbindung ermöglicht.
LXC (Linux Containers): Eine Betriebssystem-Virtualisierungsmethode zur Ausführung mehrerer isolierter Linux-Instanzen (Container) auf einem einzigen Host.
PIV (Personal Identity Verification): Ein US-Behördenstandard für Smartcards, der auf YubiKeys genutzt wird, um erweiterte PGP- und Zertifikatsfunktionen bereitzustellen.
CIDR (Classless Inter-Domain Routing): Eine Methode zur Netzwersadressierung und Routenfestlegung, mit der IP-Adressbereiche präzise definiert werden (z. B. zur Zugriffsbeschränkung).
nftables: Ein modernes Linux-Framework zur Paketfilterung und Netzwerk-Firewalling, das ältere Tools wie iptables abgelöst hat.
WSL2 (Windows Subsystem for Linux 2): Eine Technologie von Microsoft, die die Ausführung eines vollständigen Linux-Kernels direkt unter Windows ermöglicht.
ProxyJump (-J): Ein OpenSSH-Parameter, der Verbindungen über einen oder mehrere Sprung-Hosts (Bastion Hosts) leitet, ohne dass das lokale Agent-Forwarding aktiv sein muss.