Als Systemadministrator musst du Server konfigurieren, Dienste verwalten und Fehler beheben – oft ohne physisch vor Ort zu sein. Remote-Zugriff ermöglicht es, die Kommandozeile eines entfernten Systems über das Netzwerk zu bedienen als würdest du direkt daran sitzen.
Telnet war das erste verbreitete Remote-Protokoll – entwickelt 1969. Es ermöglicht die Fernsteuerung eines Systems über eine Terminalverbindung auf Port 23.
Das fatale Problem: Telnet überträgt alles im Klartext – Benutzername, Passwort und sämtliche Befehle sind für jeden im Netzwerk lesbar:
Wireshark-Mitschnitt einer Telnet-Sitzung:
login: admin
Password: superGeheim! ← Im Klartext sichtbar!
$ cat /etc/passwd ← Alle Befehle lesbar
$ ifconfigTelnet sollte in modernen Netzwerken nicht mehr verwendet werden. Es wird heute nur noch für Diagnosezwecke genutzt um TCP-Ports zu testen.
SSH (Secure Shell) wurde 1995 als sichere Alternative zu Telnet entwickelt. Es verschlüsselt die gesamte Verbindung und bietet darüber hinaus viele weitere Funktionen:
Funktion | Beschreibung |
|---|---|
Verschlüsselte Shell | Remote-Kommandozeile vollständig verschlüsselt |
SFTP | Sichere Dateiübertragung als SSH-Subsystem |
SCP | Sichere Dateiübertragung über SSH |
Port-Forwarding | Netzwerkports durch SSH-Tunnel leiten |
X11-Forwarding | Grafische Anwendungen über SSH weiterleiten |
Key-Authentifizierung | Login ohne Passwort per Public-Key-Verfahren |
Client Server (Port 22)
│ │
│──── TCP-Verbindung ──────────────▶│
│ │
│◀─── Server-Identifikation ───────│ "SSH-2.0-OpenSSH_8.9"
│──── Client-Identifikation ───────▶│ "SSH-2.0-OpenSSH_9.0"
│ │
│◀══► Key Exchange (ECDH/DH) ══════│ Sitzungsschlüssel aushandeln
│ │
│◀─── Server-Hostskey ─────────────│ Server beweist seine Identität
│ (beim ersten Mal bestätigen) │
│ │
│──── Authentifizierung ───────────▶│ Passwort oder SSH-Key
│ │
│◀════ Verschlüsselte Shell ═══════▶│ssh benutzer@192.168.1.10
benutzer@192.168.1.10's password: [Passwort eingeben]
Nachteil: Passwort muss bei jeder Verbindung eingegeben werden
Anfällig für Brute-Force-AngriffeKonzept:
Private Key → Bleibt beim Client (geheim!)
Public Key → Wird auf dem Server hinterlegt (~/.ssh/authorized_keys)
Schritt 1: Schlüsselpaar erstellen (einmalig):
ssh-keygen -t ed25519 -C "mein-laptop"
→ Erstellt: ~/.ssh/id_ed25519 (privat) und ~/.ssh/id_ed25519.pub (öffentlich)
Schritt 2: Public Key auf Server kopieren:
ssh-copy-id benutzer@192.168.1.10
Schritt 3: Login ohne Passwort:
ssh benutzer@192.168.1.10
→ Direkte Verbindung ohne Passworteingabe!Verbindung aufbauen:
ssh benutzer@server → Standard-Login
ssh -p 2222 benutzer@server → Anderen Port verwenden
ssh -i ~/.ssh/meinkey benutzer@server → Spezifischen Key verwenden
Dateien übertragen:
scp datei.txt benutzer@server:/home/benutzer/ → Datei hochladen
scp benutzer@server:/etc/hosts ./ → Datei herunterladen
scp -r ordner/ benutzer@server:/tmp/ → Ordner kopieren
Port-Forwarding:
ssh -L 8080:localhost:80 benutzer@server → Lokaler Port 8080 → Server Port 80
ssh -R 9090:localhost:3000 benutzer@server → Server Port 9090 → Lokal Port 3000
SSH-Konfigurationsdatei (~/.ssh/config):
Host myserver
HostName 192.168.1.10
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519
→ Danach einfach: ssh myserverServer-Konfiguration (/etc/ssh/sshd_config):
Port 2222 # Standardport 22 ändern
PermitRootLogin no # Root-Login deaktivieren
PasswordAuthentication no # Nur Key-Authentifizierung
MaxAuthTries 3 # Max. 3 Fehlversuche
AllowUsers admin deploy # Nur bestimmte Benutzer
ClientAliveInterval 300 # Inaktive Sessions nach 5 Min trennen
X11Forwarding no # X11 deaktivieren (wenn nicht benötigt)Merkmal | Telnet | SSH |
|---|---|---|
Port | 23 | 22 |
Verschlüsselung | Keine – Klartext | Vollständig verschlüsselt |
Authentifizierung | Passwort (im Klartext) | Passwort oder SSH-Key |
Dateiübertragung | Nein | Ja (SFTP, SCP) |
Port-Forwarding | Nein | Ja |
Einsatz heute | Nur Diagnose (Porttest) | Standard für Remote-Zugriff |
Auch wenn Telnet für Remote-Zugriff nicht mehr genutzt werden sollte, ist es ein nützliches Werkzeug um TCP-Ports zu testen:
Prüfen ob Port 80 (HTTP) erreichbar ist:
telnet 192.168.1.10 80
→ Connected: Port ist offen
→ Connection refused: Port ist zu
Prüfen ob SMTP-Server antwortet:
telnet mail.example.com 25
220 mail.example.com ESMTP ready ← Server antwortet!
Alternative (moderner):
nc -zv 192.168.1.10 80 → netcat
curl -v telnet://192.168.1.10:80 → curlTelnet ermöglicht Remote-Zugriff auf Port 23 – überträgt alles im Klartext
Telnet sollte nicht mehr für Remote-Zugriff genutzt werden – nur noch für Portdiagnose
SSH ist die sichere Alternative – Port 22, vollständige Verschlüsselung
SSH unterstützt Passwort- und Public-Key-Authentifizierung
Public-Key-Authentifizierung ist sicherer und komfortabler als Passwörter
SSH bietet zusätzlich SFTP, SCP und Port-Forwarding
Root-Login und Passwort-Authentifizierung sollten in der SSH-Konfiguration deaktiviert werden