Wissensdatenbank

SSH-Schlüssel hinzufügen und Passwörter abschalten

Ed25519-Schlüssel generieren, ordnungsgemäß installieren, testen, bevor man etwas kaputt macht, und die Passwortauthentifizierung endgültig deaktivieren.

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_keys

Die 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@laptop

Ein 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... backup

Vor dem Sperren testen

Lass die erste Sitzung verbunden. Öffne ein zweites Terminal:

ssh -o PreferredAuthentications=publickey deploy@<ipv4> id

Wenn 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 ssh

AuthenticationMethods 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.

Bereit, wenn Sie es sind

Wählen Sie eine Stadt. Wählen Sie eine Größe. Bezahlen Sie in Coins.

Keine Formulare darüber, wer Sie sind, kein Warten auf einen Menschen, der Sie genehmigt, kein Anruf zur Verifizierung. Die Rechnung wird beglichen, und die Zugangsdaten landen in Ihrem Posteingang.