Krypto

SSH

Secure Shell mit Transport Layer, Host-Authentifizierung, Fingerprints, Passwort-Login, Public-Key-Authentication und ssh-agent.

SSH

SSH steht für Secure Shell. Es ist ein Protokoll, um sichere Verbindungen zu entfernten Systemen aufzubauen.

SSH ersetzt unsichere ältere Werkzeuge wie Telnet, rsh, rcp und rlogin, bei denen Daten nicht ausreichend geschützt waren.

Was schützt SSH?

SSH schützt eine Verbindung durch:

  • Vertraulichkeit
  • Integrität
  • Server-Authentifizierung
  • Benutzer-Authentifizierung
  • gesicherte Kanäle für Befehle und Dateiübertragung

Protokollschichten

Die Folien unterscheiden drei Teile:

SchichtAufgabe
SSH Transport Layerschützt Vertraulichkeit, Integrität und Server-Authentifizierung
SSH User Authenticationauthentifiziert den Client bzw. Benutzer
SSH Connection Protocolverwaltet gesicherte Kanäle über die Verbindung

Host-Schlüssel und Fingerprint

Beim ersten Verbindungsaufbau zeigt SSH häufig einen Host-Fingerprint an.

Dieser Fingerprint gehört zum öffentlichen Schlüssel des Servers.

Die wichtige Frage ist:

Verbinde ich mich wirklich mit dem richtigen Server?

Wenn sich der Host-Fingerprint unerwartet ändert, kann das ein Hinweis auf einen Angriff oder auf einen echten Serverwechsel sein.

SSH mit Passwort

SSH kann mit Benutzername und Passwort verwendet werden.

Das ist besser als unverschlüsselte Protokolle, aber nicht ideal:

  • Passwörter können schwach sein.
  • Passwörter können wiederverwendet werden.
  • Brute-Force-Angriffe sind möglich.
  • Passwort-Login ist schwerer sauber zu automatisieren.

Public-Key-Authentication

Besser ist meist die Anmeldung mit einem Schlüsselpaar.

Dabei gibt es:

  • privaten Schlüssel auf dem Client
  • öffentlichen Schlüssel auf dem Server in ~/.ssh/authorized_keys

Der Server sendet eine Challenge. Der Client signiert sie mit dem privaten Schlüssel. Der Server prüft die Antwort mit dem öffentlichen Schlüssel.

Der private Schlüssel wird dabei nicht an den Server übertragen.

Schlüssel erzeugen

Ein typischer Befehl ist:

ssh-keygen -t ed25519

In den Folien wird auch RSA mit Bitlänge gezeigt:

ssh-keygen -t rsa -b 4096

Moderne Systeme bevorzugen häufig Ed25519, wenn es verfügbar ist.

ssh-agent

Der ssh-agent verwaltet private Schlüssel während einer Sitzung.

Nützliche Befehle:

ssh-add <datei>
ssh-add -l

Dadurch muss die Passphrase eines privaten Schlüssels nicht bei jeder Verbindung neu eingegeben werden.

Algorithmen anzeigen

SSH kann unterstützte Algorithmen anzeigen.

ssh -Q cipher
ssh -Q kex

Das ist hilfreich, um zu sehen, welche Verschlüsselungs- und Schlüsselaustauschverfahren das System unterstützt.

Sicherheitsregeln

Für SSH gelten praktische Grundregeln:

  • private Schlüssel niemals weitergeben
  • private Schlüssel mit Passphrase schützen
  • Host-Fingerprints ernst nehmen
  • Passwort-Login nach Möglichkeit deaktivieren
  • nur moderne Algorithmen erlauben
  • alte Protokollversionen vermeiden
  • unnötige Accounts entfernen

Merksatz

SSH ist nicht nur ein verschlüsseltes Terminal. Es ist ein ganzes Sicherheitsprotokoll mit Schlüsselprüfung, Authentifizierung und geschützten Kanälen.

Zuletzt aktualisiert: 6. Juni 2026