Kryptografische Grundlagen · Praxisleitfaden

SSH-Keys.
Vom Protokoll
zum sichersten Algorithmus.

Entstehungsgeschichte, kryptografischer Hintergrund und exakte Schritt-für-Schritt-Anleitungen für Debian- & RedHat-basierte Linux-Distributionen, macOS, Windows und Windows Server.

jan@netcore-media: ~
01 — Entstehungsgeschichte

Warum es SSH überhaupt gibt

Eine echte Chronologie — jeder Schritt entstand als direkte Antwort auf die Schwächen des vorherigen.

1995
SSH-1 — Tatu Ylönen, TU Helsinki
Nach einem Passwort-Sniffing-Angriff im Universitätsnetzwerk entwickelt Ylönen SSH als verschlüsselten Ersatz für die damals üblichen Klartext-Protokolle rlogin, rsh und telnet. Passwörter und Sitzungsdaten wandern erstmals verschlüsselt über das Netz.
Pflege/Steward: Tatu Ylönen persönlich, später kommerzialisiert über die von ihm gegründete SSH Communications Security Oyj.
1996
SSH-2 — komplette Neukonzeption
SSH-1 hatte strukturelle Schwächen (u.a. Integritätsprobleme bei CRC32). SSH-2 trennt das Protokoll sauber in drei Schichten: Transport, Authentication und Connection. Nicht abwärtskompatibel zu SSH-1 — bewusst.
Pflege/Steward: Tatu Ylönen zusammen mit weiteren Autoren im Entwurfsprozess, später überführt in die IETF-Arbeitsgruppe "secsh".
1999
OpenSSH entsteht
Als die ursprüngliche SSH-Lizenz restriktiver wird, forkt das OpenBSD-Team die letzte freie Version (1.2.12) zu OpenSSH. Es wird binnen weniger Jahre zur de-facto-Standardimplementierung.
Pflege/Steward: OpenBSD-Projekt (Projektleitung Theo de Raadt); die plattformübergreifende "Portable OpenSSH" wird seit vielen Jahren maßgeblich von Damien Miller betreut.
2006
IETF-Standardisierung
Die IETF gießt SSH-2 in die RFCs 4251–4256. Das Protokoll ist damit herstellerunabhängig spezifiziert.
Pflege/Steward: IETF (Internet Engineering Task Force), RFC-Editoren u.a. Tatu Ylönen und Chris Lonvick. Kein einzelnes Unternehmen besitzt den Standard.
2011
Ed25519 — Bernstein, Duif, Lange, Schwabe, Yang
Ein Forscherteam um Daniel J. Bernstein veröffentlicht Ed25519 auf Basis der elliptischen Kurve Curve25519 — es löst die Schwächen älterer Verfahren elegant und wird zur empfohlenen Standardwahl.
Pflege/Steward: das ursprüngliche Autorenteam (u.a. Bernstein, Universität Illinois in Chicago; Schwabe, Radboud University Nijmegen); formal spezifiziert in RFC 8032 (Autoren Simon Josefsson, Ilari Liusvaara).
2020 – heute
Hardware-Keys & Post-Quantum-Vorbereitung
OpenSSH 8.2 bringt FIDO2/U2F-Unterstützung (ed25519-sk). Seit OpenSSH 9.0 wird für den Schlüsselaustausch standardmäßig ein hybrides post-quantensicheres Verfahren genutzt (sntrup761x25519), seit OpenSSH 10.0 (April 2025) das NIST-standardisierte mlkem768x25519-sha256.
Pflege/Steward: FIDO Alliance (FIDO2/WebAuthn-Standard) und OpenSSH-Team für die Integration; NIST für die ML-KEM-Standardisierung (FIPS 203, 2024).
Warum zeigen viele Hosting-FAQs (z. B. ältere STRATO- oder Thomas-Krenn-Anleitungen) noch ssh-keygen -t dsa oder RSA-2048 statt Ed25519? Solche Artikel stammen oft aus einer Zeit, in der DSA/RSA Standard waren, und werden danach selten grundlegend überarbeitet — ein gutes Beispiel dafür, dass "seit Jahren online" nicht "aktuell" bedeutet. Vor dem Kopieren von Befehlen aus alten Anleitungen lohnt sich immer ein Blick auf das Veröffentlichungsdatum.
02 — Herkunft & Verantwortlichkeit

Wer erfindet und pflegt das eigentlich?

SSH ist keine Firma und kein einzelnes Produkt, sondern ein Geflecht aus Protokoll-Standards, Referenzimplementierungen und unabhängig entwickelten Signaturalgorithmen. Hier die Kette von Urheberschaft bis heutigem Steward.

rlogin / rsh / Telnet
(Vorgänger)
Obsolet
UrsprungBSD-Unix-Tools, u.a. UC Berkeley (frühe 1980er)
Heutiger MaintainerKeine aktive Pflege — durch SSH vollständig abgelöst
SSH-1-Protokoll
Obsolet
UrsprungTatu Ylönen, TU Helsinki (1995)
Heutiger MaintainerSSH Communications Security Oyj (von Ylönen gegründet)
SSH-2-Protokoll
(RFC 4251–4256)
Aktueller Standard
UrsprungTatu Ylönen, Chris Lonvick u.a. (1996, RFC 2006)
Heutiger MaintainerIETF-Arbeitsgruppe „secsh" — offener Standard, kein Rechteinhaber
OpenSSH
(Referenzimplementierung)
Aktiv gepflegt
UrsprungOpenBSD-Team, Fork von SSH 1.2.12 (1999)
Heutiger MaintainerOpenBSD-Projekt (Theo de Raadt); Portable-Version u.a. von Damien Miller
RSA-Algorithmus
Legacy-tauglich
UrsprungRivest, Shamir, Adleman — MIT (1977)
Heutiger MaintainerPatent 1983–2000 bei RSA Security, seither frei implementierbar (OpenSSL/libssh)
DSA / DSS
Seit FIPS 186-5 (2023) veraltet
UrsprungNSA-nahe Entwicklung, NIST-Vorschlag (FIPS 186, 1991/1994)
Heutiger MaintainerNIST
ECDSA / NIST-Kurven
Aktiv, umstritten
UrsprungKoblitz & Miller (1985); Kurvenparameter NIST (FIPS 186-2, 2000)
Heutiger MaintainerNIST, ANSI-X9-Komitee
EdDSA / Ed25519
Empfehlung
UrsprungBernstein, Duif, Lange, Schwabe, Yang (2011, RFC 8032 2015)
Heutiger MaintainerUrsprüngliches Forscherteam & IETF; keine Patente
ed25519-sk
(FIDO2/U2F)
Aktiv gepflegt
UrsprungFIDO Alliance, WebAuthn-Standard (2018); OpenSSH 8.2 (2020)
Heutiger MaintainerFIDO Alliance + OpenSSH-Team
Post-Quantum-KEX
(sntrup761x25519)
Abgelöst durch ML-KEM
UrsprungStreamlined-NTRU-Prime-Team, u.a. Bernstein (OpenSSH 9.0, 2022)
Heutiger MaintainerOpenSSH-Team
Post-Quantum-KEX
(mlkem768x25519)
Aktueller Standard-KEX
UrsprungCRYSTALS-Kyber-Team (FIPS 203, 2024); OpenSSH 10.0 (2025)
Heutiger MaintainerNIST (Standard) + OpenSSH-Team (Integration)
ML-DSA / Dilithium
(kommende Signatur)
Vision — noch nicht integriert
UrsprungCRYSTALS-Dilithium-Team (FIPS 204, 2024)
Heutiger MaintainerNIST (Standard); Integration als SSH-Host-Key-Typ steht noch aus

Kurz zusammengefasst: Das Protokoll liegt in der Hand der IETF, die Referenzimplementierung beim OpenBSD-Projekt, und jeder Signatur-/KEX-Algorithmus stammt aus einer eigenen, meist akademischen Forschungslinie mit eigener Historie — deshalb altern sie auch unterschiedlich schnell. Backlinks führen zu Primärquellen; diese Seite ist Teil des Projekts ssh.webservice.digital von NETCORE⚡MEDIA, Maintainer: Jan Gebser.

03 — Kryptografischer Hintergrund

Die Schlüsseltypen im Vergleich

Jeder Algorithmus löst ein Problem seines Vorgängers — und bringt ein neues mit.

DSA
Entfernt seit OpenSSH 7.0
1991 · NIST1024 bit fix
Starr auf 1024 bit begrenzt, gilt als unsicher. Seit 2021 in OpenSSH vollständig entfernt.
RSA
Solide, aber alt
1977 · Rivest/Shamir/Adleman3072–4096 bit
Basiert auf der Schwierigkeit der Faktorisierung großer Primzahlprodukte. Mit ausreichender Länge sicher, aber größer und langsamer als Kurvenverfahren.
+--[RSA 3072]----+ | . o+. | | . +.oo | | . o +o+E | | . =.=+o | | . o S.o. | | o + o | | + . | | o | | | +-----------------+
ECDSA
Umstritten
~2005 · NIST-Kurven256/384/521 bit
Kompakter als RSA, aber NIST-Kurvenparameter stehen unter Backdoor-Verdacht. Schlechte RNG-Implementierungen führten 2010 zum Bruch des Sony-PS3-Signaturschlüssels.
+--[ECDSA 256]---+ | .o=*O%*+. | | +=+X*B. | | ..*+*.o | | . +.o o | | .S | | | | | | | | | +-----------------+
Ed25519
Empfehlung
2011 · Bernstein et al.256 bit / 68 Zeichen
Deterministische Signaturen — kein RNG-Risiko. Kleine, schnelle Schlüssel ohne bekannte Kurven-Bedenken. Heute Standard für neue Deployments.
+--[ED25519]-----+ | .+=*#@+ | | . o+*+%*. | | . .oo=+o | | .+ o . | | S . | | | | | | | | | +-----------------+
Ed25519-SK
Hardware-gebunden
2020 · OpenSSH 8.2FIDO2/U2F
Der private Schlüssel verlässt nie ein Hardware-Token (z. B. YubiKey). Für kritische Zugänge derzeit die robusteste Option.
Post-Quantum (KEX)
Bereits Standard
OpenSSH 10.0 · April 2025mlkem768x25519-sha256
Betrifft den Schlüsselaustausch, nicht den Host-Key-Typ: Seit OpenSSH 10.0 ist ein hybrides Verfahren aus klassischem X25519 und dem NIST-standardisierten ML-KEM-768 (FIPS 203, CRYSTALS-Kyber) standardmäßig aktiv — Nachfolger von sntrup761x25519 (OpenSSH 9.0–9.9). Schutz gegen „Harvest now, decrypt later"-Angriffe. Für die Authentifizierung selbst bleibt Ed25519 vorerst die beste Wahl, bis post-quantensichere Signaturverfahren (ML-DSA/FIPS 204) in OpenSSH integriert sind.
04 — Praxis

SSH-Keys erzeugen — je Plattform

Alle Befehle nutzen ed25519 als empfohlenen Standard.

Debian, Ubuntu, Linux Mint

# Client installieren
sudo apt update && sudo apt install openssh-client -y

# Schlüsselpaar erzeugen
ssh-keygen -t ed25519 -a 100 -C "jan@netcore-media"

# ssh-agent starten und Key laden
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# Public Key auf Zielserver übertragen
ssh-copy-id user@zielserver.de
Für dauerhaftes Laden: Eintrag in ~/.ssh/config mit AddKeysToAgent yes.

RHEL, Fedora, CentOS Stream, Rocky Linux, AlmaLinux

# Client installieren
sudo dnf install openssh-clients -y

# Schlüsselpaar erzeugen
ssh-keygen -t ed25519 -a 100 -C "jan@netcore-media"

# ssh-agent starten und Key laden
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# Public Key übertragen
ssh-copy-id user@zielserver.de

# Falls SELinux blockiert
restorecon -R -v ~/.ssh
SELinux im Enforcing-Modus verlangt korrekte Kontexte für ~/.ssh.

macOS

# Schlüsselpaar erzeugen
ssh-keygen -t ed25519 -a 100 -C "jan@netcore-media"

# Passphrase in der macOS-Keychain speichern
ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Für automatisches Laden bei jedem Login, ~/.ssh/config ergänzen:

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_ed25519

Windows 10 / 11 (OpenSSH-Client integriert seit Build 1809)

# PowerShell (Administrator) — prüfen ob installiert
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

# Falls nicht vorhanden, installieren
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

# Schlüsselpaar erzeugen
ssh-keygen -t ed25519 -a 100 -C "jan@netcore-media"

# ssh-agent als Windows-Dienst aktivieren
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Alternative für Legacy-Setups: PuTTYgen — für OpenSSH-Kompatibilität aber ssh-keygen bevorzugen.

Windows Server 2019 / 2022

# PowerShell (Administrator) — OpenSSH-Features installieren
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# sshd-Dienst aktivieren
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

# Schlüsselpaar auf dem Client erzeugen
ssh-keygen -t ed25519 -a 100 -C "jan@netcore-media"
Für Administratoren-Konten erwartet Windows den Public Key zusätzlich in C:\ProgramData\ssh\administrators_authorized_keys mit angepassten ACLs.
05 — Playground

Simulator-Konsole

Erst die geführte Demo zum Kennenlernen, danach der Prüfungsmodus: Baue die Befehle selbst zusammen — per Baukasten oder freier Eingabe. Ab 70 % korrekt im ersten Versuch gibt es das Zertifikat.

🎓 Zertifikat anfordern

Gib eine E-Mail-Adresse an, um dein personalisiertes SSH-Zertifikat auszustellen. Es wird sicher im Vault abgelegt, dir per Mail zugestellt und ist über die Cert-ID unten im Footer erneut abrufbar.

Service-ID dieser Sitzung: 33C91354-2609220252 — bei Support-Anfragen bitte angeben.

🔉 Konzentrationsmusik
06 — Absicherung

Best Practices

Klicke eine Karte für Details. Beim Hover markiert sich die Karte grün — so wie ein Pentester eine offene Angriffsfläche markieren würde.

PASSPHRASE

Immer setzen

Ein Private Key ohne Passphrase ist bei Diebstahl sofort nutzbar.

↻ Details

Warum das wichtig ist

  • Passphrase = zweiter Faktor, falls die Datei kopiert wird
  • ssh-keygen -p -f ~/.ssh/id_ed25519 ändert sie nachträglich
  • In Kombination mit ssh-agent nur einmal pro Sitzung nötig
BERECHTIGUNGEN

chmod korrekt setzen

chmod 700 ~/.ssh, chmod 600 Private Key, chmod 644 Public Key.

↻ Details

Typische Stolperfallen

  • Zu offene Rechte → OpenSSH verweigert den Key komplett
  • authorized_keys auf dem Server: 600
  • Home-Verzeichnis selbst darf nicht group-writable sein
TRENNUNG

Ein Key pro Zweck

Separate Schlüssel für Produktion, private Projekte und Drittanbieter.

↻ Details

Praktische Umsetzung

  • ~/.ssh/config mit IdentityFile je Host-Eintrag
  • Ein kompromittierter Key betrifft nur einen Kontext
  • Sprechende Kommentare (-C) je Zweck vergeben
ROTATION

Alte Keys ablösen

Verwaiste Public Keys regelmäßig aus authorized_keys entfernen.

↻ Details

Wann rotieren?

  • Nach Personalwechsel oder Geräteverlust sofort
  • Turnusmäßig alle 12–24 Monate bei kritischen Systemen
  • Alte Fingerprints dokumentieren vor dem Entfernen
HARDWARE

Kritische Zugänge härten

Für Root-Zugriffe ed25519-sk mit FIDO2-Token nutzen.

↻ Details

Vorteil

  • Privater Schlüssel verlässt das Hardware-Token nie
  • Physische Berührung bei jeder Authentifizierung nötig
  • Schützt selbst bei vollständig kompromittiertem Rechner
SERVER-SEITIG

authorized_keys absichern

Passwort-Login serverseitig deaktivieren, sobald Keys eingerichtet sind.

↻ Details

Reihenfolge beachten

  • Erst Key-Login testen, dann Passwort abschalten
  • PasswordAuthentication no in sshd_config
  • sshd -t vor Neustart zur Syntax-Prüfung nutzen
SERVER-HÄRTUNG

sshd_config konsequent umstellen

Separaten Nutzer anlegen, erst danach PermitRootLogin no setzen.

↻ Details

Empfohlene Reihenfolge

  • 1. Separaten Nutzer + Key-Login einrichten
  • 2. PermitRootLogin no
  • 3. PasswordAuthentication no + ChallengeResponseAuthentication no
MONITORING

Angriffe sichtbar machen

Auch mit Key-Only-Auth lohnt sich ein Blick auf fehlgeschlagene Login-Versuche.

↻ Details

Werkzeuge

  • fail2ban sperrt IPs nach wiederholten Fehlversuchen
  • journalctl -u sshd / /var/log/auth.log prüfen
  • Port-Wechsel von 22 reduziert automatisiertes Scanner-Rauschen
📖 Mehr Details & Tipps zur Absicherung ansehen →