Einleitung
SSH (Secure Shell) ist das Standard-Tool für sichere Remote-Verbindungen. Dieser Guide zeigt dir alle wichtigen Befehle und Techniken.
Grundlegende Verbindung
Zu einem Host verbinden
ssh [user]@[host]
SSH-Key generieren
ssh-keygen -b 4096
Erstellt ein 4096-Bit RSA-Schlüsselpaar für sichere Authentifizierung.
Befehle ausführen
Befehl ausführen und beenden
ssh [user]@[host] "command"
Führt einen einzelnen Befehl auf dem Remote-Host aus und beendet die Verbindung.
Erweiterte Funktionen
X11 Session Forwarding
ssh -X [user]@[host]
Ermöglicht das Ausführen von grafischen Anwendungen über SSH.
TCP Port Forwarding
ssh -L [local_port]:[remote_host]:[remote_port] [user]@[host]
Leitet einen lokalen Port zu einem Remote-Port weiter (Local Port Forwarding).
SOCKS5 Proxying
ssh -D 9999 [user]@[host]
Erstellt einen SOCKS5-Proxy auf Port 9999 für sichere Internetverbindungen.
Session beenden
SSH-Session beenden
exit
logout
# Oder Tastenkombination:
(Ctrl+d)
Dateitransfer mit SCP
Datei hochladen (Push)
scp [localFile] [user]@[host]:[remoteFile]
Datei herunterladen (Pull)
scp [user]@[host]:[remoteFile] .
Tipp: Für Verzeichnisse nutze die -r Option:
scp -r [localFolder] [user]@[host]:[remotePath]
SSH-Konfiguration
SSH-Config-Datei nutzen
Erstelle ~/.ssh/config für häufig genutzte Verbindungen:
Host myserver
HostName example.com
User admin
Port 2222
IdentityFile ~/.ssh/id_rsa_custom
Dann einfach verbinden mit:
ssh myserver
Sicherheits-Best Practices
Public Key statt Passwort
# Key auf Server kopieren
ssh-copy-id [user]@[host]
# Oder manuell
cat ~/.ssh/id_rsa.pub | ssh [user]@[host] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
SSH Agent nutzen
# SSH Agent starten
eval $(ssh-agent)
# Key hinzufügen
ssh-add ~/.ssh/id_rsa
Port Forwarding Beispiele
Lokalen MySQL-Zugriff via SSH-Tunnel
ssh -L 3306:localhost:3306 [user]@[host]
Jetzt kannst du lokal auf localhost:3306 zugreifen, als wäre es der Remote-Server.
Remote Desktop via SSH
ssh -L 5900:localhost:5900 [user]@[host]
Nützliche Optionen
Verbose Mode für Debugging
ssh -v [user]@[host]
# oder für mehr Details:
ssh -vvv [user]@[host]
Verbindung ohne StrictHostKeyChecking (Vorsicht!)
ssh -o StrictHostKeyChecking=no [user]@[host]
Warnung: Nur in vertrauenswürdigen Umgebungen nutzen!