Schlüssel auf dem Rechner erzeugen, an dem du sitzt
Nicht auf dem Server. Die private Hälfte sollte niemals auf einem Host existieren, zu dem du den Zugang verlieren könntest, und sie herumzukopieren macht den ganzen Sinn zunichte.
ssh-keygen -t ed25519 -a 100 -C "laptop-2026"-a 100 legt die Anzahl der KDF-Runden fest, die die Passphrase schützen – das Einzige, was zwischen einem gestohlenen Laptop und deiner Flotte steht. Verwende eine Passphrase. Wenn du ein Hardware-Token besitzt, nimm das stattdessen:
ssh-keygen -t ed25519-sk -O resident -C "token-1"Die öffentliche Hälfte installieren
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@<ipv4>Von Hand, aus einer Root-Sitzung, falls das Konto noch kein Passwort hat:
install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
install -m 600 -o deploy -g deploy /dev/null /home/deploy/.ssh/authorized_keys
cat >> /home/deploy/.ssh/authorized_keysDie einzelne Zeile einfügen, dann Ctrl-D. Berechtigungen sind wichtiger, als man denkt: sshd verweigert ein gruppenbeschreibbares Home-Verzeichnis oder ein .ssh-Verzeichnis und erklärt sich nur im Daemon-Log, niemals gegenüber dem Client.
Den Schlüssel einschränken, solange du drin bist
Optionen in authorized_keys gelten pro Schlüssel. restrict schaltet alles ab, dann fügst du wieder hinzu, was der Schlüssel wirklich braucht:
restrict,pty ssh-ed25519 AAAAC3Nza... deploy@laptopEin Schlüssel, der für einen Job existiert, sollte nur diesen einen Job ausführen dürfen:
restrict,command="/usr/local/bin/backup-receive" ssh-ed25519 AAAAC3Nza... backupVor dem Sperren testen
Lass die erste Sitzung verbunden. Öffne ein zweites Terminal:
ssh -o PreferredAuthentications=publickey deploy@<ipv4> idWenn das deine UID ausgibt, funktioniert der Schlüsselpfad. Wenn nicht, sagen ssh -vvv auf dem Client und journalctl -u ssh -n 50 auf dem Server zusammen, welche Seite unzufrieden ist. In etwa der Hälfte der Fälle liegt es an den Berechtigungen, im Rest an einem falschen Benutzernamen.
Passwörter abschalten
cat > /etc/ssh/sshd_config.d/20-keys-only.conf <<EOF
PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitEmptyPasswords no
AuthenticationMethods publickey
EOF
sshd -t && systemctl reload sshAuthenticationMethods publickey ist der Sicherheitsgurt unter der Klammer. Selbst wenn später ein Drop-in stillschweigend Passwörter wieder aktiviert, verweigert der Daemon trotzdem alles, was kein Schlüssel ist.
Bestätige vom Client aus, dass die Tür zu ist:
ssh -o PreferredAuthentications=password deploy@<ipv4>Das erwartete Ergebnis ist Permission denied (publickey).
Schlüssel zur Bereitstellung
Das Panel führt pro Konto eine Schlüsselliste. Aktiviere die gewünschten, cloud-init schreibt sie beim ersten Boot, so dass eine Instanz von Anfang an ohne Passwortauthentifizierung existieren kann. Den Schlüssel an die Bestellung zu hängen, verkürzt die zehn Minuten oben auf eine.
Wenn du den Schlüssel verlierst
Es gibt hier keine identitätsbasierte Wiederherstellung, weil wir keine Identität speichern. Die Out-of-Band-Konsole ist der Weg zurück: Sie erreicht die Instanz über einen Pfad, der sshd nie berührt, und aus einer Rescue-Shell kannst du einen neuen Schlüssel hinzufügen und weitermachen.
Halte einen zweiten Schlüssel auf einem zweiten Rechner, dann musst du diesen Artikel nie wieder lesen.