Ein ed25519-sk-SSH-Schlüssel ist ein Ed25519-Schlüssel, dessen Signaturvorgang in einem FIDO2-Sicherheitsschlüssel stattfindet. Sie erstellen ihn mit ssh-keygen -t ed25519-sk. Er erfordert bei jeder Anmeldung eine Berührung des Schlüssels und funktioniert nur, wenn sowohl Client als auch Server OpenSSH 8.2 oder neuer ausführen, das im Februar 2020 veröffentlicht wurde.
Wie sich ein OpenSSH-ed25519-sk-Schlüssel von einem normalen Ed25519-Schlüssel unterscheidet
OpenSSH unterstützt Ed25519 seit Version 6.5 (Januar 2014) und die FIDO2-Variante ed25519-sk seit 8.2 (Februar 2020). Der Unterschied liegt darin, wo das Geheimnis gespeichert ist. Bei einem klassischen Ed25519-Schlüssel ist ~/.ssh/id_ed25519 der private Schlüssel: Wer ihn kopiert und die Passphrase kennt, kann sich an Ihren Servern anmelden.
Bei ed25519-sk wird die Signatur im Hardware-Schlüssel berechnet. Die Datei id_ed25519_sk, die ssh-keygen auf die Festplatte schreibt, ist ein Key-Handle, das ohne das physische Gerät nutzlos ist. Jede Authentifizierung erfordert zudem die Anwesenheit des Nutzers, also eine Berührung des Schlüssels. Den Laptop oder die Datei zu stehlen, reicht nicht mehr aus.
Was gleich bleibt: Der öffentliche Schlüssel kommt wie gewohnt in authorized_keys, jetzt mit dem Typ [email protected]. Auch die erwarteten Berechtigungen ändern sich nicht: ~/.ssh auf 700, authorized_keys und Schlüsseldateien auf 600.
So erzeugen Sie einen ed25519-sk-Schlüssel mit ssh-keygen, Schritt für Schritt
Der Basisbefehl lautet ssh-keygen -t ed25519-sk bei eingestecktem FIDO2-Schlüssel. ssh-keygen fordert Sie während der Erzeugung auf, ihn zu berühren. Alle -O-Optionen sind in der offiziellen Manpage von ssh-keygen beschrieben.
# Non-resident key: the handle stays in ~/.ssh/id_ed25519_sk
ssh-keygen -t ed25519-sk -C "work-key"
# Resident key, PIN required, with its own label
ssh-keygen -t ed25519-sk -O resident -O verify-required -O application=ssh:production
# Install the public key on the server
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@server
# On another machine: pull the resident keys off the token
ssh-keygen -K
# Or load them straight into ssh-agent
ssh-add -KDie Optionen, die Sie tatsächlich verwenden werden:
- -O resident: speichert die Anmeldedaten auf dem Token, sodass Sie sie auf einem anderen Rechner wiederherstellen können.
- -O verify-required: verlangt zusätzlich zur Berührung bei jeder Signatur die PIN des Tokens.
- -O application=ssh:name: unterscheidet mehrere residente Schlüssel auf demselben Token. Der Wert muss mit
ssh:beginnen. - -O no-touch-required: verzichtet auf die Berührung. Der Server akzeptiert das aber nur, wenn die Zeile in
authorized_keysdie Optionno-touch-requiredenthält.
-O resident bei ed25519-sk: Der Schlüssel reist im FIDO2-Token mit
Mit -O resident werden die Anmeldedaten auf dem FIDO2-Token selbst gespeichert, nicht nur in der lokalen Datei. Auf einem neuen Rechner stecken Sie den Token ein und führen ssh-keygen -K aus, das die Dateien ins aktuelle Verzeichnis schreibt. Alternativ laden Sie sie mit ssh-add -K in den Agenten, ohne die Festplatte zu berühren.
Der Vorteil: Sie sind nicht mehr von der Datei auf jedem einzelnen Rechner abhängig. Das Risiko ist das Spiegelbild davon: Wer den Token besitzt, kann das Handle extrahieren. Schützen Sie ihn daher mit einer PIN und kombinieren Sie -O resident mit -O verify-required. Ohne -O resident bedeutet der Verlust von id_ed25519_sk, dass Sie von diesem Rechner aus keinen Zugang mehr haben, selbst wenn Sie den Token noch besitzen. Tokens, die nur U2F implementieren, können keine residenten Anmeldedaten speichern.
Welche Server ed25519-sk-Schlüssel akzeptieren: OpenSSH 8.2 oder neuer
Ein Server akzeptiert ed25519-sk-Schlüssel, wenn sein sshd OpenSSH 8.2 oder neuer ist. Am Server muss kein Token angeschlossen sein. Er muss lediglich den Schlüsseltyp [email protected] verstehen. Prüfen Sie das, bevor Sie Ihren aktuellen Schlüssel ausmustern:
# OpenSSH version installed on the server
ssh -V
# Public key algorithms sshd actually accepts
sudo sshd -T | grep -i pubkeyaccepted
# ~/.ssh/authorized_keys line that also requires a PIN
verify-required [email protected] AAAA... work-keyWenn [email protected] in der Ausgabe von sshd -T erscheint, funktioniert der Schlüssel. Um für alle Nutzer eine PIN zu verlangen, fügen Sie PubkeyAuthOptions verify-required zu sshd_config hinzu. Ein Server, der älter als 8.2 ist, ist auch älter als 8.8. Das ist die Version, die ssh-rsa-Signaturen mit SHA-1 standardmäßig deaktiviert hat, ein Upgrade ist also ohnehin überfällig. Die Seite mit den OpenSSH-Release-Notes listet auf, was in jeder Version hinzugekommen ist.
ed25519-sk-Schlüssel und Ed25519-Schlüssel auf dem Smartphone: Vergleichstabelle
Auf dem Desktop funktioniert ed25519-sk mit jedem OpenSSH ab 8.2 und einem eingesteckten Token. Unter iOS und Android hängt es davon ab, ob der Client FIDO2 implementiert und wie der Token mit dem Smartphone verbunden wird. Die übliche mobile Alternative ist ein Ed25519-Schlüssel, der direkt auf dem Gerät erzeugt wird.
| Verglichen wird | ed25519-sk auf dem Desktop | Ed25519 im sicheren Speicher des Smartphones |
|---|---|---|
| Wo das Geheimnis liegt | Im FIDO2-Token | Im sicheren Speicher von iOS oder Android |
| Was Sie zum Anmelden brauchen | Eingesteckter Token und eine Berührung | Das Smartphone, auf dem der Schlüssel liegt |
| Mindestversion von OpenSSH auf dem Server | 8.2 (Februar 2020) | 6.5 (Januar 2014) |
| Wenn jemand die Datei kopiert | Nutzlos ohne den physischen Token | In termi1 verlässt der private Schlüssel nie das Gerät |
| Schlüssel auf einem anderen Rechner verwenden | Mit -O resident und ssh-keygen -K | Pro Gerät einen eigenen Schlüssel erzeugen |
termi1, das SSH-Terminal für iOS und Android, folgt dem zweiten Modell. Es erzeugt den Schlüssel auf dem Smartphone, bewahrt ihn im sicheren Speicher des Systems auf und sendet den privaten Schlüssel niemals an die Server von termi1. Auch die KI öffnet die Sitzung nicht und erhält keine Schlüssel. Ein sinnvolles Setup ist ein ed25519-sk-Schlüssel für den Laptop plus ein Schlüssel pro Smartphone in authorized_keys, sodass Sie nur den Schlüssel widerrufen, den Sie verlieren. Bei Mosh findet die Authentifizierung nur bei der anfänglichen SSH-Verbindung statt, die mosh-server startet. Ein Wechsel von WLAN zu mobilen Daten löst sie nicht erneut aus, und tmux behält alles bei, was Sie laufen gelassen haben.
4 Fehler beim Einrichten von ed25519-sk-Schlüsseln mit OpenSSH
- Server älter als OpenSSH 8.2. sshd erkennt den Schlüsseltyp nicht und lehnt ihn ab. Behalten Sie Ihren alten Schlüssel, bis Sie die Version geprüft haben.
- Nur ein FIDO2-Token registriert. Geht er verloren oder kaputt, ist auch Ihr Zugang weg. Registrieren Sie zwei Tokens oder einen Token plus einen Backup-Schlüssel.
- id_ed25519_sk bei einem nicht residenten Schlüssel löschen. Ohne
-O residentlässt sich die Datei nicht vom Token wiederherstellen. Sichern Sie sie oder erstellen Sie den Schlüssel als resident. - Die alte Sitzung vor dem Testen schließen. Öffnen Sie eine zweite Verbindung mit
ssh -i ~/.ssh/id_ed25519_sk user@server, bevor Siesshd_configbearbeiten.
Häufig gestellte Fragen
Welche OpenSSH-Version brauche ich für ed25519-sk-Schlüssel?
ed25519-sk-Schlüssel erfordern OpenSSH 8.2 oder neuer, veröffentlicht im Februar 2020. Das gilt sowohl für den Client, der den Schlüssel erstellt und verwendet, als auch für den Server, der ihn prüft. Die installierte Version prüfen Sie mit ssh -V, die vom Server akzeptierten Algorithmen mit sshd -T.
Was bewirkt -O resident in ssh-keygen?
Die Option -O resident in ssh-keygen speichert die FIDO2-Anmeldedaten auf dem Sicherheitsschlüssel selbst. So lassen sie sich auf einem anderen Rechner mit ssh-keygen -K wiederherstellen oder mit ssh-add -K in den Agenten laden. Am besten kombinieren Sie die Option mit einer Token-PIN und -O verify-required.
Kann jemand einen ed25519-sk-Schlüssel stehlen, indem er die Datei kopiert?
Ein ed25519-sk-Schlüssel lässt sich nicht allein durch Kopieren der Datei id_ed25519_sk nutzen, denn diese Datei ist nur ein Key-Handle, und die Signatur wird im FIDO2-Token berechnet. Für die Anmeldung braucht man das physische Gerät und standardmäßig bei jeder Authentifizierung eine Berührung.
Kann ich FIDO2-SSH-Schlüssel vom Smartphone aus verwenden?
Ob sich FIDO2-SSH-Schlüssel unter iOS oder Android nutzen lassen, hängt davon ab, ob der mobile Client ed25519-sk implementiert und wie der Token mit dem Smartphone verbunden wird. Die gängige Alternative ist ein auf dem Gerät erzeugter Ed25519-Schlüssel im sicheren Speicher. So arbeitet termi1.