Kurz gesagt: ssh-keygen -t ed25519 -C "du@example.com" erstellt ein Schlüsselpaar in ~/.ssh/ – einen privaten Schlüssel, den du behältst, und eine .pub-Datei, die du auf jeden Server kopierst. Drücke Enter, um den Standardpfad zu übernehmen, und vergib eine Passphrase, wenn du gefragt wirst; der Rest erklärt, warum, und was du mit dem Schlüssel danach machst.
Den Schlüssel erstellen
ssh-keygen -t ed25519 -C "du@example.com"
# Generating public/private ed25519 key pair.
# Enter file in which to save the key (/home/du/.ssh/id_ed25519):
# Enter passphrase (empty for no passphrase):
# Enter same passphrase again:
# Your identification has been saved in /home/du/.ssh/id_ed25519
# Your public key has been saved in /home/du/.ssh/id_ed25519.pub-C setzt einen Kommentar, der im öffentlichen Schlüssel gespeichert wird – meist eine E-Mail-Adresse oder der Name der Maschine, nur damit du Schlüssel später in der authorized_keys-Datei eines Servers unterscheiden kannst. Für die Sicherheit spielt er keine Rolle.
Welcher Schlüsseltyp: ed25519 oder RSA
| ed25519 | RSA | |
|---|---|---|
| Schlüsselgröße | Fest, ~68 Byte öffentlicher Schlüssel | Variabel; 4096 Bit empfohlen |
| Geschwindigkeit | Schneller zu erzeugen und zu prüfen | Bei 4096 Bit deutlich langsamer |
| Unterstützung | OpenSSH 6.5+ (2014) und neuer – praktisch überall aktuell | Universell, auch auf sehr alten Servern |
| Empfehlung | Heute die Standardwahl | Nur wenn ein Server zu alt für ed25519 ist |
ssh-keygen -t rsa -b 4096 -C "du@example.com"Warum eine Passphrase setzen?
Eine Passphrase verschlüsselt die private Schlüsseldatei selbst – ohne sie kann jeder, der ~/.ssh/id_ed25519 von deiner Festplatte kopiert (ein gestohlener Laptop, ein durchgesickertes Backup, Malware, die dein Home-Verzeichnis liest), sich damit sofort und ohne die Passphrase zu kennen bei jedem Server anmelden, der dem Schlüssel vertraut. Mit gesetzter Passphrase ist diese Datei allein nutzlos.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
ssh-add -l # bestätigt, dass er geladen istUnter macOS speichert ssh-add --apple-use-keychain ~/.ssh/id_ed25519 die Passphrase in der Login-Keychain, sodass sie bei jeder neuen Sitzung automatisch geladen wird, nicht nur in der aktuellen.
Den öffentlichen Schlüssel auf einen Server kopieren
ssh-copy-id user@203.0.113.10ssh-copy-id meldet sich einmal mit deiner aktuellen Methode an (Passwort oder ein vorhandener Schlüssel), hängt deinen öffentlichen Schlüssel an ~/.ssh/authorized_keys auf dem Server an und korrigiert die Dateirechte, falls nötig – die drei Dinge, die für die Anmeldung per Schlüssel stimmen müssen.
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"Was authorized_keys erwartet
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx du@laptopchmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keyssshd vertraut authorized_keys nicht, wenn die Datei oder das .ssh-Verzeichnis für die Gruppe oder alle schreibbar ist – falsche Rechte sind einer der häufigsten Gründe, warum der Login per Schlüssel still auf ein Passwort zurückfällt.
Mit dem Schlüssel verbinden
ssh -i ~/.ssh/id_ed25519 user@203.0.113.10
# Liegt der Schlüssel am Standardpfad mit Standardnamen, brauchst du -i nicht:
ssh user@203.0.113.10Windows mit PuTTY
PuTTY liest OpenSSHs Schlüsselformat nicht direkt – erzeuge den Schlüssel stattdessen in PuTTYgen (oder lade eine vorhandene id_ed25519-Datei über Conversions → Import key in PuTTYgen), speichere die .ppk-Datei und trage sie unter Connection → SSH → Auth → Credentials in PuTTY ein. Pageant, das mit PuTTY installiert wird, spielt dieselbe Rolle wie ssh-agent – lade den Schlüssel einmal pro Sitzung hinein, statt ihn bei jeder Verbindung zu entsperren.
Passwort-Login abschalten, sobald der Schlüssel funktioniert
Bestätige zuerst in einer zweiten, separaten Sitzung, dass der Schlüssel dich erfolgreich anmeldet, bevor du das hier anfasst – den Passwort-Login auszuschalten, während deine einzige funktionierende Sitzung genau die ist, die davon betroffen sein wird, ist der klassische Weg, sich selbst auszusperren:
PasswordAuthentication nosudo systemctl restart sshd # auf Debian/Ubuntu heißt der Dienst teils "ssh": systemctl restart sshDas ist nur ein Schritt einer größeren Absicherung – die vollständige Reihenfolge, in der du dich nicht aussperren kannst, steht in SSH-Zugriff absichern (engl.).
Schlüssel kopiert, aber trotzdem nach einem Passwort gefragt oder ganz abgelehnt? Sieh dir Permission denied (publickey) (engl.) an – meist steckt eine falsche Berechtigung oder ein falscher Pfad dahinter.
Häufige Fragen
Wie erstelle ich einen SSH-Key?
ssh-keygen -t ed25519 -C "du@example.com" ausführen, Enter drücken, um den Standardpfad zu übernehmen, und eine Passphrase vergeben. Das erzeugt einen privaten Schlüssel und eine passende .pub-Datei in ~/.ssh/.
ed25519 oder RSA – was soll ich nehmen?
ed25519 für alles Aktuelle – er ist schneller zu erzeugen und zu prüfen und wird seit OpenSSH 6.5 (2014) unterstützt, also praktisch überall. RSA mit -b 4096 nur, wenn du dich mit einem Server verbinden musst, der zu alt für ed25519 ist.
Brauche ich eine Passphrase für meinen SSH-Key?
Ja, für alles außer einem Wegwerf-Testkey. Ohne Passphrase kann jeder, der die private Schlüsseldatei von deiner Festplatte kopiert, sich damit sofort anmelden. ssh-agent lässt dich die Passphrase einmal pro Sitzung eingeben statt bei jeder Verbindung.