ssh-keygen — SSH-Schlüssel erzeugen und verwalten

Praxis-Guide zu ssh-keygen — Ed25519- und RSA-Schlüsselpaare erstellen, Passphrasen verwalten, known_hosts pflegen und SSH-Zertifikate ausstellen.

ssh-keygen ist das Standardwerkzeug von OpenSSH zum Erzeugen und Verwalten von SSH-Schlüsselpaaren. Mit einem einzigen Befehl erzeugst du ein modernes Ed25519- oder klassisches RSA-Schlüsselpaar, schützt es mit einer Passphrase und hinterlegst den öffentlichen Schlüssel auf dem Server – ab dann meldest du dich passwortlos an. Daneben verwaltest du known_hosts, prüfst Fingerabdrücke und kannst mit SSH-Zertifikaten eine skalierbare CA-Infrastruktur aufbauen.

Schlüssel erzeugen

ssh-keygen -t ed25519 — Erzeugt ein Ed25519-Schlüsselpaar (modern, empfohlen).

ssh-keygen -t ed25519 -C 'user@example.com'

ssh-keygen -t rsa -b 4096 — Erzeugt ein RSA-Schlüsselpaar mit 4096 Bit.

ssh-keygen -t rsa -b 4096 -C 'user@example.com'

ssh-keygen -t ed25519 -f <file> — Erzeugt einen Schlüssel und speichert ihn unter einem eigenen Dateinamen.

ssh-keygen -t ed25519 -f ~/.ssh/deploy_key

ssh-keygen -t ed25519 -N '' — Erzeugt einen Schlüssel ohne Passphrase (für Automatisierung).

ssh-keygen -t ed25519 -N '' -f ~/.ssh/ci_key

ssh-keygen -t ecdsa -b 521 — Erzeugt einen ECDSA-Schlüssel mit 521-Bit-Kurve.

ssh-keygen -t ecdsa -b 521

Schlüsselinfo & Fingerabdrücke

ssh-keygen -l -f <key> — Zeigt den Fingerabdruck eines Schlüssels.

ssh-keygen -l -f ~/.ssh/id_ed25519.pub

ssh-keygen -l -E md5 -f <key> — Zeigt den Fingerabdruck im MD5-Format. — MD5 gilt als veraltet, nur für Legacy-Kompatibilität.

ssh-keygen -l -E md5 -f ~/.ssh/id_ed25519.pub

ssh-keygen -lv -f <key> — Zeigt den Fingerabdruck mit visuellem ASCII-Bild (Randomart).

ssh-keygen -lv -f ~/.ssh/id_ed25519.pub

ssh-keygen -y -f <private-key> — Extrahiert den öffentlichen Schlüssel aus einem privaten Schlüssel.

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

Passphrase verwalten

ssh-keygen -p -f <key> — Ändert die Passphrase eines privaten Schlüssels.

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

ssh-keygen -p -f <key> -N '' -P '<old>' — Entfernt die Passphrase eines Schlüssels. — Passphrase erscheint im Klartext in der Shell-History; nur in kontrollierten Umgebungen.

ssh-keygen -p -f ~/.ssh/id_ed25519 -N '' -P 'oldpassphrase'

known_hosts verwalten

ssh-keygen -R <host> — Entfernt einen Host aus known_hosts (nach Schlüsselwechsel).

ssh-keygen -R server.example.com

ssh-keygen -F <host> — Sucht nach einem Host in known_hosts.

ssh-keygen -F github.com

ssh-keygen -H -f ~/.ssh/known_hosts — Hasht alle Hostnamen in known_hosts (für Datenschutz).

ssh-keygen -H -f ~/.ssh/known_hosts

ssh-keyscan <host> — Ruft den öffentlichen Schlüssel eines entfernten Hosts ab.

ssh-keyscan github.com >> ~/.ssh/known_hosts

ssh-keyscan -t ed25519 <host> — Ruft nur einen bestimmten Schlüsseltyp ab.

ssh-keyscan -t ed25519 github.com

Format konvertieren

ssh-keygen -e -f <key> -m RFC4716 — Exportiert den öffentlichen Schlüssel im RFC-4716-Format (SSH2).

ssh-keygen -e -f ~/.ssh/id_ed25519.pub -m RFC4716

ssh-keygen -e -f <key> -m PEM — Exportiert den öffentlichen Schlüssel im PEM-Format.

ssh-keygen -e -f ~/.ssh/id_rsa.pub -m PEM

ssh-keygen -i -f <key> -m RFC4716 — Importiert einen Schlüssel aus dem RFC-4716-Format ins OpenSSH-Format.

ssh-keygen -i -f key.pub -m RFC4716

Zertifikate & Signaturen

ssh-keygen -s <ca-key> -I <id> -n <principals> <key>.pub — Signiert einen Benutzer-Schlüssel mit einem CA-Schlüssel (SSH-Zertifikate).

ssh-keygen -s ca_key -I user_john -n john,admin john.pub

ssh-keygen -s <ca-key> -I <id> -h <host-key>.pub — Signiert einen Host-Schlüssel mit einem CA-Schlüssel.

ssh-keygen -s ca_key -I server.example.com -h ssh_host_ed25519_key.pub

ssh-keygen -L -f <cert> — Zeigt Details eines SSH-Zertifikats.

ssh-keygen -L -f john-cert.pub

ssh-keygen -Y sign -f <key> -n <namespace> <file> — Signiert eine Datei mit einem SSH-Schlüssel.

ssh-keygen -Y sign -f ~/.ssh/id_ed25519 -n file release.tar.gz

ssh-keygen -Y verify -f <allowed-signers> -I <id> -n <namespace> -s <sig> < <file> — Verifiziert eine Datei-Signatur.

ssh-keygen -Y verify -f allowed_signers -I user@example.com -n file -s release.tar.gz.sig < release.tar.gz

Fazit

Mit ssh-keygen hast du alles, was du für sichere passwortlose Authentifizierung brauchst – von der Schlüsselerzeugung bis zur Zertifikatsvergabe. Greife im Alltag zu Ed25519: kompakt, schnell und kryptografisch zeitgemäß. Schütze private Schlüssel immer mit einer Passphrase und nutze einen SSH-Agenten, um sie nur einmal pro Session eingeben zu müssen.

Verwandte Kommandos

  • ssh – sichere Remote-Verbindungen aufbauen
  • scp – Dateien sicher zwischen Hosts übertragen
  • mosh – robuste SSH-Verbindungen für mobile Nutzer