Übersicht
Dieser Leitfaden behandelt die grundlegenden Konzepte und wichtigsten Anwendungsbereiche von SSH (Secure Shell), einem unverzichtbaren Werkzeug für die Linux-Serververwaltung und Remote-Arbeit. Von der Installation des Client-Pakets über die grundlegende Remoteverbindung, die sichere Erstellung von SSH-Schlüsselpaaren und die Konfiguration der passwortlosen Authentifizierung bis hin zu praktischen SSH-Config-Profilen und Portweiterleitungstechniken führt Sie dieser Beitrag Schritt für Schritt mit anschaulichen Terminal-Praxisbefehlen durch den Prozess.
1. Überprüfung des SSH-Clients und grundlegende Remoteverbindung
Für die Durchführung der SSH-Remoteverbindungspraxis installieren wir das Paket openssh-client und aktualisieren es auf den neuesten Stand.

Der Befehl ssh -V prüft die Versionsinformationen des auf dem System installierten OpenSSH-Clients.
⚙️ [Wichtige Optionen]
-p : Gibt anstelle des Standardports 22 eine bestimmte Portnummer an, die der Remoteserver verwendet.-i : Gibt den Dateipfad zum privaten Schlüssel (Private Key) an, der anstelle eines Passworts für die Authentifizierung verwendet werden soll.-v : Gibt Debug-Meldungen aus, um den Verbindungsprozess und Ursachen von Problemen detailliert zu analysieren.-C : Aktiviert die Komprimierung bei der Datenübertragung, um Netzwerkbandbreite zu sparen.-o : Gibt Optionen, die normalerweise in der Konfigurationsdatei (~/.ssh/config) definiert werden (z. B. ConnectTimeout), direkt in der Befehlszeile an.-L : Richtet eine lokale Portweiterleitung ein, um Datenverkehr an einen entfernten Netzwerkdienst weiterzuleiten.-R : Richtet eine Remote-Portweiterleitung ein, um den Zugriff vom Remoteserver auf lokale Dienste zu ermöglichen.

Der Befehl ssh -p 22 -o ConnectTimeout=5 [email protected] versucht eine Verbindung zum angegebenen Remote-Host mit Port 22 und einem Verbindungs-Timeout von 5 Sekunden herzustellen.
Dadurch wird endloses Warten bei Verbindungsverzögerungen verhindert und der Verbindungsstatus kann schnell überprüft werden.

2. Erstellung von SSH-Schlüsselpaaren (Key Pair) und sichere Berechtigungskonfiguration
Bereiten Sie ein Verzeichnis vor, um die SSH-Schlüsseldateien sicher aufzubewahren, und beschränken Sie die Zugriffsrechte mit dem Befehl mkdir -p ~/.ssh && chmod 700 ~/.ssh so, dass nur der Eigentümer Zugriff hat.

Der Befehl ssh-keygen -t ed25519 -C 'lab-demo@ubuntu' -f ~/.ssh/id_ed25519 -N '' generiert ein neues SSH-Schlüsselpaar unter Verwendung des modernen Verschlüsselungsstandards Ed25519 ohne Passphrase.
Anhand der Befehlsausgabe können Sie überprüfen, ob der private Schlüssel (id_ed25519), der öffentliche Schlüssel (id_ed25519.pub) und der eindeutige Schlüssel-Fingerprint erfolgreich erstellt wurden.

Um die strengen Sicherheitsanforderungen des SSH-Daemons zu erfüllen, legen Sie die Dateiberechtigungen mit dem Befehl chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub so fest, dass der private Schlüssel nur vom Eigentümer gelesen und geschrieben werden kann, während der öffentliche Schlüssel für jeden lesbar ist.

Der Befehl ls -la ~/.ssh listet die im Verzeichnis erstellten Dateien und deren konfigurierte Sicherheitsberechtigungen detailliert auf.
Anhand der Ausgabe lässt sich verifizieren, dass das Verzeichnis .ssh mit drwx------ (700), der private Schlüssel mit -rw------- (600) und der öffentliche Schlüssel mit -rw-r--r-- (644) die beabsichtigten Berechtigungen korrekt erhalten haben.

3. Registrierung des öffentlichen Schlüssels für passwortlose Anmeldung (ssh-copy-id)
Erstellen Sie die Datei zum Speichern von öffentlichen Schlüsseln für Remoteverbindungen und setzen Sie die Zugriffsberechtigungen mit dem Befehl touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys so, dass nur der Eigentümer Lese- und Schreibrechte besitzt.

Führen Sie den Befehl cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys aus, um den Inhalt des erstellten öffentlichen Schlüssels zur Liste der autorisierten Schlüssel hinzuzufügen.

Der Befehl ssh-keygen -l -f ~/.ssh/authorized_keys ruft die Fingerprint-Informationen der registrierten Authentifizierungsschlüsseldatei ab, um zu überprüfen, ob der öffentliche Schlüssel ordnungsgemäß hinterlegt wurde.
Die Ausgabe bestätigt, dass der 256-Bit Ed25519 öffentliche Schlüssel sowie der bei der Erstellung angegebene Kommentar (lab-demo@ubuntu) korrekt registriert sind.

4. Vereinfachung komplexer Verbindungsbefehle mit der SSH-Konfigurationsdatei
Definieren Sie die IP-Adresse des Remote-Hosts, den Benutzernamen, die Portnummer und den Pfad zum Authentifizierungsschlüssel in der Datei ~/.ssh/config, um sich bequem über einen Alias anstelle langer Verbindungsinformationen zu verbinden.

Um zu verhindern, dass der SSH-Client eine aus Sicherheitsgründen unsichere Konfigurationsdatei ablehnt, setzen Sie die Dateiberechtigungen mit dem Befehl chmod 600 ~/.ssh/config so, dass nur der Eigentümer Lese- und Schreibrechte besitzt.

Der Befehl cat ~/.ssh/config gibt den Inhalt der erstellten SSH-Client-Konfigurationsdatei aus, um die Einstellungen zu überprüfen.
Anhand der Ausgabe lässt sich bestätigen, dass Hostname, Benutzerkonto, Port und die privaten Schlüsselinformationen für den Alias dev-server wie vorgesehen gespeichert wurden.

5. Ausführen von SSH-Einmalbefehlen und Tunneling zur Steigerung der Produktivität bei der Remote-Arbeit
Der Befehl ssh -V prüft die Versionsinformationen des aktuell auf dem System installierten OpenSSH-Clients.

Der Befehl ssh -o BatchMode=yes -o ConnectTimeout=2 [email protected] 'uname -a; df -h' || true führt Befehle zur Abfrage von Systeminformationen und zur Überprüfung der Festplattenbelegung direkt auf dem Remote-Host aus und gibt die Ergebnisse zurück, ohne eine interaktive Remote-Shell zu öffnen.
Da keine Passworteingabe erwartet wird und die Ausführung sofort erfolgt, können Einmalbefehle in Automatisierungsskripten oder Batch-Jobs sicher ausgeführt werden.

Der Befehl ssh -f -N -L 8080:localhost:80 -o ConnectTimeout=2 [email protected] || true führt ein lokales Port-Forwarding durch, indem im Hintergrund ein sicherer, verschlüsselter Tunnel ohne Ausführung von Remote-Befehlen aufgebaut wird, der den lokalen Port 8080 mit Port 80 des Remoteservers verbindet.
Dadurch lässt sich über den lokalen Port sicher auf interne Webdienste oder Datenbanken auf der Remote-Seite zugreifen, die von außen nicht direkt erreichbar sind.

In diesem Leitfaden haben wir Schritt für Schritt die Grundlagen der SSH-Remoteverbindung unter Ubuntu, die Erhöhung der Sicherheit durch schlüsselbasierte passwortlose Anmeldung und nützliche Portweiterleitungs-Techniken kennengelernt.
Nutzen Sie die durch die praktische Übung erworbenen SSH-Kenntnisse, um Ihre Remote-Serververwaltungsumgebung künftig noch sicherer und komfortabler zu gestalten.