Dieselben SSH-Schlüssel auf mehreren Rechnern nutzen

Üblich ist ein Schlüssel pro Gerät: Führen Sie auf jedem Rechner ssh-keygen -t ed25519 aus und tragen Sie jeden öffentlichen Schlüssel in ~/.ssh/authorized_keys auf Ihren Servern ein. Geht ein Laptop verloren, entfernen Sie nur eine Zeile. Einen einzigen privaten Schlüssel auf alle Geräte zu kopieren funktioniert auch, wenn er eine Passphrase hat, verschlüsselt übertragen wird und Modus 600 bekommt. Geht dann aber ein Gerät verloren, müssen Sie den Schlüssel überall ersetzen.

Keine Lust, für jeden Rechner eine eigene Schlüsseldatei zu verwalten? Wardterm hält Ihre Schlüssel in einem Vault, der Sie von Gerät zu Gerät begleitet. Zeigen

Aktualisiert am . Schlüssel erzeugen, einen zweiten öffentlichen Schlüssel über eine bestehende Anmeldung hinzufügen, Fingerprints auflisten, ein Gerät anhand seines Kommentars entfernen, eine Passphrase ändern und ein Schlüsselpaar mit ssh-keygen -y prüfen liefen mit OpenSSH 10.0 unter Debian 13, Client und Server in einem Wegwerf-Container.

Zwei Wege

Jedes Gerät, das sich mit einem Schlüssel verbindet, braucht einen privaten Schlüssel. Sie können jedem Gerät einen eigenen Schlüssel geben oder denselben Schlüssel auf alle kopieren.

Ein Schlüssel pro GerätEin kopierter Schlüssel
EinrichtungJeden neuen öffentlichen Schlüssel auf jedem Server eintragenEine Datei auf jedes Gerät kopieren
Gerät verloren oder verkauftEine Zeile pro Server entfernenNeuer Schlüssel auf jedem Gerät und jedem Server
Server-LogsZeigen, welches Gerät sich angemeldet hatAlle Anmeldungen sehen gleich aus
Hardware-Schlüssel und SmartphonesFunktioniert, da der Schlüssel nie wandern mussNicht möglich, wenn der Schlüssel nicht exportierbar ist

Ein Schlüssel pro Gerät ist die sicherere Grundeinstellung und die, die die meisten Teams nutzen. Kopieren lohnt sich bei wenigen Geräten, die Sie vollständig kontrollieren, wenn das Eintragen auf vielen Servern der größere Aufwand ist.

Schlüssel auf dem neuen Gerät erzeugen

Erzeugen Sie auf dem neuen Rechner einen Schlüssel mit einem Kommentar, der das Gerät benennt:

ssh-keygen -t ed25519 -C "me@desktop"

Übernehmen Sie die vorgeschlagene Datei ~/.ssh/id_ed25519 und vergeben Sie eine Passphrase. Der Kommentar steht neben dem Schlüssel in authorized_keys und in Fingerprint-Listen, und genau damit finden Sie später die richtige Zeile zum Entfernen. Die Optionen erklärt die Anleitung Ed25519-SSH-Schlüssel erzeugen.

Auf Ihren Servern eintragen

Akzeptiert der Server noch Passwörter, führen Sie dies auf dem neuen Gerät aus:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server

Ist die Passwort-Anmeldung abgeschaltet, was die bessere Einstellung ist, nehmen Sie ein Gerät, das sich schon anmelden kann. Bringen Sie die neue .pub-Datei dorthin (sie ist öffentlich, E-Mail oder Chat sind also in Ordnung) und hängen Sie sie an:

ssh deploy@server "cat >> ~/.ssh/authorized_keys" < desktop.pub

Prüfen Sie, dass beide Schlüssel mit ihrem Kommentar vorhanden sind:

ssh deploy@server "ssh-keygen -lf ~/.ssh/authorized_keys"
256 SHA256:l1AS4F9VRH90JA6uJuQw7/3uRDzrtMafpkeiO7zel84 me@laptop (ED25519)
256 SHA256:LGklWc72FhPwm7in/sLr3pGRujcSZ6a6z4E97qJGkRE me@desktop (ED25519)

Wiederholen Sie das für jeden Server, und tragen Sie den Schlüssel bei GitHub oder GitLab unter den SSH-Schlüsseln des Kontos ein, wenn Sie von diesem Gerät Code pushen. Bei vielen Servern spart eine kurze Schleife über Ihre Host-Liste Zeit. Das Dateiformat erklärt die authorized_keys-Datei erklärt.

Wenn Sie den Schlüssel doch kopieren

Kopieren Sie beide Dateien, id_ed25519 und id_ed25519.pub, über einen Ende-zu-Ende verschlüsselten Weg: einen verschlüsselten USB-Stick, AirDrop oder scp zwischen zwei eigenen Rechnern. Meiden Sie E-Mail, Chat und geteilte Ordner, die Kopien behalten. Dann auf dem neuen Gerät:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Ohne diese Rechte lehnt ssh den Schlüssel ab. Hat der Schlüssel keine Passphrase, vergeben Sie jetzt eine, denn er liegt nun an mehr Orten:

ssh-keygen -p -f ~/.ssh/id_ed25519

Um zu prüfen, ob privater und öffentlicher Schlüssel zusammengehören, lassen Sie den öffentlichen Teil aus dem privaten ausgeben und vergleichen:

ssh-keygen -y -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

Beide Zeilen müssen mit demselben Schlüssel beginnen. Mehr dazu in öffentlichen Schlüssel aus dem privaten Schlüssel gewinnen.

Wenn ein Gerät verloren geht oder ersetzt wird

Bei einem Schlüssel pro Gerät entfernen Sie die Zeile dieses Geräts auf jedem Server. Sichern Sie die Datei, löschen Sie per Kommentar und listen Sie auf, was übrig ist:

sed -i.bak '/ me@desktop$/d' ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys

Einen Kommentar kann jeder ändern, der Zugriff hatte. Suchen Sie bei einem gestohlenen Gerät deshalb nach dem Fingerprint, wie in einen SSH-Schlüssel sperren beschrieben. Entfernen Sie den Schlüssel auch bei GitHub und ähnlichen Diensten.

Bei einem kopierten Schlüssel hat das verlorene Gerät denselben Schlüssel wie alle anderen. Erzeugen Sie einen neuen Schlüssel, tragen Sie ihn überall ein, entfernen Sie den alten öffentlichen Schlüssel von jedem Server und Dienst und kopieren Sie den neuen privaten Schlüssel auf die Geräte, die Sie noch haben. Bis dahin schützt nur die Passphrase den alten Schlüssel.

Die Konfiguration überall gleich halten

Die privaten Schlüssel unterscheiden sich pro Gerät, ~/.ssh/config kann aber identisch sein, solange jedes Gerät seinen Schlüssel gleich benennt:

Host *
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Host prod
    HostName 203.0.113.10
    User deploy

Die Konfiguration enthält keine Geheimnisse und kann daher in einem Dotfiles-Repository oder Sync-Ordner liegen. Halten Sie id_*-Dateien ohne .pub daraus fern. Host-Muster finden Sie in Beispiele für die SSH-Config-Datei, und einen SSH-Schlüsselmanager mit verschlüsseltem Vault, wenn Sie Schlüssel und Server lieber zusammen aufbewahren.

Fragen

Darf ich meinen privaten SSH-Schlüssel auf einen anderen Rechner kopieren?

Es funktioniert, und OpenSSH ist es egal, wo ein Schlüssel erzeugt wurde. Der Preis kommt am Ende: Gelangt eine Kopie nach außen oder geht ein Gerät verloren, muss der Schlüssel auf jedem Server und jedem Gerät ersetzt werden, das ihn hat.

Kann ich meinen .ssh-Ordner in Dropbox, iCloud oder ein Dotfiles-Repository legen?

Konfiguration und öffentliche Schlüssel ja, private Schlüssel nie. Ein Sync-Ordner oder die Git-Historie behält Kopien, die Sie nicht vollständig löschen können.

Wie viele Schlüssel passen in authorized_keys?

Praktisch unbegrenzt viele. Jede Zeile ist ein Schlüssel, und ein Kommentar wie me@laptop am Ende unterscheidet sie.

Quellen

Mehr zu Schlüssel und Anmeldung

Alle Anleitungen