SSH - Secure Shell
IETF-Standard für verschlüsselte Remote-Verbindungen
SSH - Secure Shell
Kryptographisches Netzwerkprotokoll für sichere Verbindungen zu entfernten Servern
Was ist SSH?
SSH (Secure Shell) ist ein kryptographisches Netzwerkprotokoll, das eine sichere Verbindung zwischen einem Client und einem Server ermöglicht. Es wurde als Ersatz für unsichere Protokolle wie Telnet, rlogin und rsh entwickelt.
SSH bietet:
- Verschlüsselung: Alle Daten werden verschlüsselt übertragen
- Authentifizierung: Server und Client verifizieren ihre Identität
- Integrität: Schutz vor Manipulation der Daten
- Tunneling: Weiterleitung anderer Protokolle (Port Forwarding)
Wichtige RFCs
| RFC | Titel |
|---|---|
| RFC 4251 | SSH Protocol Architecture |
| RFC 4252 | SSH Authentication Protocol |
| RFC 4253 | SSH Transport Layer Protocol |
| RFC 4254 | SSH Connection Protocol |
| RFC 4716 | SSH Public Key File Format |
| RFC 8332 | SSH Ed25519 Keys |
Alle RFCs sind von der IETF standardisiert und frei verfügbar.
Versionen
- SSH-1 (1995): Erste Version von Tatu Ylönen, später Sicherheitslücken entdeckt
- SSH-2 (2006): Komplett neu entwickelte Version, IETF-Standard, sicherer
- OpenSSH (1999): Open-Source-Implementierung, heute am weitesten verbreitet
SSH-1 von Tatu Ylönen (Finland)
OpenSSH 1.0 (OpenBSD)
SSH-2 als IETF-Standard (RFC 4251-4254)
Wie funktioniert SSH?
Eine SSH-Verbindung wird in drei Phasen aufgebaut:
1. Transport Layer
Aufbau der verschlüsselten Verbindung, Server-Authentifizierung, Aushandlung von Algorithmen
2. Authentifizierung
Client weist seine Identität nach (Passwort, Public Key, etc.)
3. Verbindung
Multiplexing mehrerer Kanäle (Shell, Dateiübertragung, Port Forwarding)
Typischer Verbindungsaufbau:
$ ssh benutzer@server.example.com
# Server sendet öffentlichen Schlüssel
# Client prüft gegen bekannte Hosts (~/.ssh/known_hosts)
# Aushandlung von Algorithmen:
KEX: diffie-hellman-group-exchange-sha256
ENC: aes256-ctr
MAC: hmac-sha2-256
# Authentifizierung (z.B. Passwort)
benutzer@server's password: ********
Authentifizierungsmethoden
Passwort
Einfachste Methode – Benutzername + Passwort. Bequem, aber weniger sicher bei schwachen Passwörtern.
Public-Key
Sicherste Methode – Schlüsselpaar (privat/öffentlich). Der Server kennt nur den öffentlichen Schlüssel.
ssh-keygen -t ed25519
# Kopieren zum Server
ssh-copy-id user@host
Zwei-Faktor
Kombination aus Passwort/Key + TOTP (Google Authenticator) oder Hardware-Token (YubiKey).
| Schlüsseltyp | Algorithmus | Sicherheit | Empfehlung |
|---|---|---|---|
| RSA | 2048/4096 Bit | Gut | Ältere Systeme |
| ECDSA | 256/384/521 Bit | Sehr gut | Moderne Systeme |
| Ed25519 | 256 Bit | Hervorragend | Empfohlen (schnell, sicher) |
Typische Anwendungen
- Remote Shell: sicheres Terminal auf entfernten Servern
- SFTP/SCP: sichere Dateiübertragung
- Port Forwarding: Tunnel für andere Dienste
- X11 Forwarding: grafische Anwendungen über SSH
- Git über SSH: sichere Git-Operationen
Port Forwarding (Tunneling)
ssh -L 8080:localhost:80 user@host
# => localhost:8080 leitet zu host:80
# Remote Forwarding
ssh -R 8080:localhost:80 user@host
# Dynamisches Forwarding (SOCKS-Proxy)
ssh -D 1080 user@host
Anwendung: Absicherung unsicherer Protokolle, Umgehung von Firewalls, Zugriff auf interne Dienste.
OpenSSH
OpenSSH ist die Open-Source-Implementierung des SSH-Protokolls, entwickelt vom OpenBSD-Projekt. Es ist heute der De-facto-Standard.
- Vorinstalliert auf Linux, macOS, BSD
- Verfügbar für Windows (PowerShell, WSL)
- Aktiv weiterentwickelt (regelmäßige Updates)
- Unterstützt alle modernen Algorithmen
Proprietäre SSH
- SSH Communications Security: Original SSH von Tatu Ylönen
- VanDyke SecureCRT: Kommerzieller Client für Windows
- PuTTY: Freier Windows-Client (nicht OpenSSH-basiert)
Server-Konfiguration (sshd_config)
Port 22
Protocol 2
PermitRootLogin prohibit-password
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
# Nur bestimmte Benutzer erlauben
AllowUsers admin developer
# Maximale Versuche
MaxAuthTries 3
MaxSessions 10
SSH-Keys verwalten
Wichtige Dateien:
~/.ssh/id_ed25519– Privater Schlüssel (NIEMALS weitergeben!)~/.ssh/id_ed25519.pub– Öffentlicher Schlüssel~/.ssh/known_hosts– Bekannte Server-Schlüssel~/.ssh/authorized_keys– Erlaubte öffentliche Schlüssel (auf dem Server)~/.ssh/config– Client-Konfiguration
Client-Konfiguration (~/.ssh/config)
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
Compression yes
# Spezifische Hosts
Host webserver
HostName 192.168.1.100
User admin
Port 2222
IdentityFile ~/.ssh/webserver.key
# Verwendung: ssh webserver
SSH-Sicherheit – Best Practices
✅ Empfohlen
- Ed25519- oder RSA-4096-Schlüssel verwenden
- Passwort-Authentifizierung deaktivieren (nur Public-Key)
- Root-Login verbieten (PermitRootLogin no)
- SSH auf nicht-standard Port (z.B. 2222)
- Fail2ban für Brute-Force-Schutz
- Regelmäßige Updates
❌ Zu vermeiden
- SSH-1 (veraltet, unsicher)
- Schwache Passwörter
- RSA-1024 oder DSA-Schlüssel
- Offene Ports ohne Firewall
- Veraltete OpenSSH-Versionen
Veraltete Alternativen
- Telnet (Port 23): Keine Verschlüsselung – alles im Klartext
- rlogin/rsh: Unsicher, keine Authentifizierung
- FTP: Dateiübertragung ohne Verschlüsselung
Diese Protokolle sollten nicht mehr verwendet werden – SSH ist der moderne Standard.
Zukunft: Post-Quanten-Kryptographie
Forschende arbeiten an quantenresistenten Algorithmen für SSH. Aktuelle Ansätze:
- Hybrid-Schlüsselaustausch (klassisch + quantenresistent)
- NIST-Wettbewerb für Post-Quantum-Kryptographie
SSH – Der Standard für sichere Remote-Zugriffe
SSH ist aus der modernen IT nicht mehr wegzudenken. Es wird von Administratoren, Entwicklern und Cloud-Plattformen weltweit eingesetzt. Die Kombination aus starker Verschlüsselung, flexibler Authentifizierung und vielseitigen Einsatzmöglichkeiten macht es zum unverzichtbaren Werkzeug.