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.

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)

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.

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 und ist nur über diesen Browser-Session-Link abrufbar.

Service-ID dieser Sitzung: 1649DA42-2607251507 — bei Support-Anfragen bitte angeben.

06 — Absicherung

Best Practices

PASSPHRASE

Immer setzen

Ein Private Key ohne Passphrase ist bei Diebstahl sofort nutzbar.

BERECHTIGUNGEN

chmod korrekt setzen

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

TRENNUNG

Ein Key pro Zweck

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

ROTATION

Alte Keys ablösen

Verwaiste Public Keys regelmäßig aus authorized_keys entfernen.

HARDWARE

Kritische Zugänge härten

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

SERVER-SEITIG

authorized_keys absichern

Passwort-Login serverseitig deaktivieren, sobald Keys eingerichtet sind.

SERVER-HÄRTUNG

sshd_config konsequent umstellen

Separaten Nutzer anlegen, erst danach PermitRootLogin no setzen. Nach erfolgreichem Key-Test zusätzlich PasswordAuthentication no und ChallengeResponseAuthentication no — erst dann ist Public-Key-Only aktiv.