SSH und RSA-Schlüssel erklärt: Schlüsselpaare generieren, verwenden und absichern
Ein praktischer Leitfaden zu SSH- und RSA-Schlüsselpaaren – wie sie funktionieren, wie man sie im Browser generiert und wie man sie für sicheren Server-Zugang und Verschlüsselung einsetzt.
Public-Key-Kryptografie ist die Grundlage sicherer Internet-Kommunikation – SSH-Verbindungen, HTTPS, JWT-Signierung und verschlüsselte E-Mails basieren alle darauf. Wer verstehen, wie Schlüsselpaare funktionieren, wird ein effektiverer Entwickler und ein sicherheitsbewussterer Nutzer.
Das Grundprinzip: öffentliche und private Schlüssel
Ein Schlüsselpaar besteht aus zwei mathematisch verknüpften Schlüsseln:
- Privater Schlüssel — Verbleibt auf deinem Gerät. Teile ihn niemals. Er ist gewissermaßen deine Identität.
- Öffentlicher Schlüssel — Kann frei geteilt werden. Du hinterlegst ihn auf Servern, in GitHub oder in JWT-Konfigurationen.
Die Mathematik funktioniert in eine Richtung: Mit einem öffentlichen Schlüssel verschlüsselte Daten können nur mit dem zugehörigen privaten Schlüssel entschlüsselt werden. Und Daten, die mit einem privaten Schlüssel signiert wurden, können mit dem öffentlichen Schlüssel verifiziert werden – ohne den privaten Schlüssel preiszugeben.
SSH-Schlüssel: Serverzugang ohne Passwort
SSH (Secure Shell) ist der Standard für den Fernzugriff auf Server. Passwort-Authentifizierung funktioniert, hat aber Schwächen – Passwörter können erraten, abgephisht oder geleakt werden. SSH-Schlüssel-Authentifizierung ist grundlegend sicherer:
- Dein Client erbringt einen kryptografischen Nachweis mithilfe deines privaten Schlüssels
- Der Server prüft den Nachweis anhand des von dir hinterlegten öffentlichen Schlüssels
- Kein Passwort wird über das Netzwerk übertragen – es gibt nichts abzufangen
SSH-Schlüssel-Authentifizierung einrichten:
# Schlüsselpaar generieren (Ed25519 ist der moderne Standard)
ssh-keygen -t ed25519 -C "your-email@example.com"
# Öffentlichen Schlüssel auf einen Server kopieren
ssh-copy-id user@yourserver.com
# Verbinden – kein Passwort erforderlich
ssh user@yourserver.com
Der öffentliche Schlüssel wird in ~/.ssh/authorized_keys auf dem Server eingetragen. Der private Schlüssel verlässt niemals dein Gerät.
Ed25519 vs. RSA für SSH
Ed25519 ist die aktuelle Empfehlung:
- Kleinere Schlüssel (256-Bit) mit gleichwertiger oder besserer Sicherheit als RSA-4096
- Schnellere Signaturerstellung und -verifizierung
- Wird von allen modernen SSH-Servern unterstützt
RSA ist nach wie vor weit verbreitet, besonders in Unternehmensumgebungen mit älteren Systemen:
- 2048-Bit ist heute die minimale akzeptable Schlüsselgröße
- 4096-Bit bietet zusätzlichen Spielraum für langlebige Schlüssel
- Größere Schlüssel bedeuten eine geringfügig langsamere Authentifizierung
Generiere SSH-Schlüssel im Browser mit unserem SSH Key Generator – Ed25519 und ECDSA, unter Verwendung der Web Crypto API. Kein Schlüsselmaterial verlässt deinen Browser.
RSA-Schlüssel: Verschlüsselung und Signierung
RSA-Schlüssel werden über SSH hinaus eingesetzt – für TLS-Zertifikate, JWT-Signierung, verschlüsselte E-Mails (PGP) und API-Authentifizierung.
Typische RSA-Anwendungsfälle:
JWT (JSON Web Tokens) mit RS256:
- Tokens mit deinem privaten RSA-Schlüssel signieren
- Clients verifizieren mit dem öffentlichen Schlüssel
- Anders als bei HS256 (symmetrisch) benötigt der Verifizierer das Signiergeheimnis nie
Code-Signierung:
- Ein Release-Artefakt mit deinem privaten Schlüssel signieren
- Nutzer prüfen die Signatur mit deinem veröffentlichten öffentlichen Schlüssel
- Beweist, dass das Artefakt von dir stammt und nicht manipuliert wurde
TLS/SSL-Zertifikate:
- Zertifizierungsstellen signieren deinen öffentlichen Schlüssel mit ihrem privaten Schlüssel
- Browser prüfen die Signatur anhand des öffentlichen Schlüssels der CA (im Browser integriert)
Generiere RSA-Schlüsselpaare im PEM-Format mit unserem RSA Key Generator – 2048-Bit oder 4096-Bit, vollständig in deinem Browser.
Das PEM-Format erklärt
RSA- und SSH-Schlüssel werden häufig im PEM-Format (Privacy Enhanced Mail) weitergegeben:
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7o4qne60...
-----END PRIVATE KEY-----
Kopf- und Fußzeile identifizieren den Schlüsseltyp. Der mittlere Teil enthält die base64-kodierten Schlüsseldaten. Verschiedene Kopfzeilen stehen für verschiedene Schlüsseltypen:
BEGIN RSA PRIVATE KEY— Traditionelles PKCS#1-FormatBEGIN PRIVATE KEY— PKCS#8-Format (in modernen Tools üblicher)BEGIN PUBLIC KEY— Öffentlicher Schlüssel im PKCS#8-FormatBEGIN OPENSSH PRIVATE KEY— OpenSSHs eigenes Format für SSH-Schlüssel
Den privaten Schlüssel schützen
Die Sicherheit des privaten Schlüssels ist entscheidend:
- Niemals in git eincommiten — Füge
*.pem,id_rsaundid_ed25519zur.gitignorehinzu - Eine Passphrase verwenden — Verschlüsselt den Schlüssel im Ruhezustand. Selbst wenn jemand die Datei erlangt, kann er sie ohne die Passphrase nicht verwenden.
- Berechtigungen einschränken — SSH verlangt
chmod 600für private Schlüsseldateien; für andere lesbare Schlüssel verweigert es die Nutzung - Bei Kompromittierung rotieren — Neues Paar generieren und den alten öffentlichen Schlüssel von allen Servern entfernen
# Korrekte Berechtigungen für den privaten Schlüssel setzen
chmod 600 ~/.ssh/id_ed25519
Schlüssel-Fingerabdrücke
Ein Fingerabdruck ist ein kurzer Hash eines öffentlichen Schlüssels, der zur Identitätsverifizierung dient, ohne den vollständigen Schlüssel vergleichen zu müssen:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
# Ausgabe: 256 SHA256:abc123... your-email@example.com (ED25519)
Beim erstmaligen Verbinden mit einem Server zeigt SSH den Fingerabdruck des Hosts an und bittet um Bestätigung. Verifiziere diesen Fingerabdruck über einen separaten Kanal (z. B. die Dokumentation des Server-Anbieters), bevor du ihn akzeptierst.
Zusammenfassung
SSH- und RSA-Schlüsselpaare bieten Authentifizierung und Verschlüsselung, die Passwörtern grundlegend überlegen sind. Verwende Ed25519 für SSH, RSA-4096 für Signierung und Verschlüsselung, schütze private Schlüssel stets mit einer Passphrase, und generiere Schlüssel lokal – lass niemals einen Drittanbieter-Dienst deinen privaten Schlüssel für dich erstellen.