Tunnel: Auch unterwegs erreichbar
Nicht nur in Zeiten längerer Phasen von improvisierten Arbeitsplätzen stellt sich beim Betrieb eines Servers hinter Routern mit NAT und Firewalls die Frage: Wie komme ich von außen auf den Server? Klar, über eine Portweiterleitung auf dem Router und einen dynamischen Domainnamen. Hierzu sind allerdings Adminrechte auf dem Router erforderlich. In schwierigen Fällen und bei wechselnden Netzwerken hilft ein umgekehrter Ssh-tunnel.
Mit einem umgekehrten Sshtunnel macht sich ein beliebiges Linux-system mit wechselnder Ip-adresse auch hinter Firewall und NAT per SSH über einen weiteren Linux-server erreichbar, der eine feste IP oder einen Hostnamen im Internet hat. Das kann auch ein kleiner Server in der Cloud oder zu Hause hinter einer Portweiterleitung sein. Hauptsache, der Rechner ist jederzeit mittels SSH erreichbar und nicht zu langsam angebunden. In dieser kurzen Anleitung heißt diese Maschine ihrer Rolle gemäß „Relais“, weil sie als Zwischenstation dient.
1. Auf dem Relais verlangt die Konfiguration des OPEN-SSHServers eine Anpassung in der Datei „/etc/ssh/sshd_ config“mit root-recht oder über sudo. Die Zeile „Gatewayports no“ändern Sie bitte zu Gatewayports yes
Nun speichern Sie die Datei. Als Nächstes starten Sie den Sshdienst mit dem folgenden Kommando neu: sudo systemctl restart
sshd
2. Auf dem Linux-system, das von außen erreichbar sein soll, gilt es als Nächstes, den gewünschten Serverdienst zu starten, beispielsweise einen Weboder Ssh-server. Bei all diesen Diensten ist es wichtig, dass sie auf dem System selbst über die lokale Adresse „localhost“erreichbar sind, was standardmäßig der Fall ist.
3. Auf diesem System bauen Sie nun eine Ssh-verbindung zum Relais auf, die sich lokal hinter den gewünschten Port des Serverdienstes klemmt und diese Verbindung tunnelt. Um beispielsweise einen lokalen Webserver auf dem Port 80 über die Adresse des Relais und auf dem dortigen Port 8080 verfügbar zu machen, würde der Befehl ssh -R 8080:127.0.0.1:80
user@relais dienen. Den lokalen Ssh-server auf Port 22 tunnelt das folgende Kommando ssh -R 2222:127.0.0.1:22
user@relais über den Port 22 auf dem Relais-server.
4. Von anderen Clients im Internet ist jetzt der lokale Server über das Relais bei den vorangegangenen Beispielen per http://relais:8080 erreichbar (Webserver) und mit SSH wie folgt: ssh -p 2222 Relais
Dies funktioniert, solange die Ssh-verbindung vom lokalen Rechner zum Relais steht. Fehlersuche: Schlagen Verbindungsversuche fehl, sollten Sie zuerst kontrollieren, ob die verwendeten Ports, hier 8080 und 2222, auf dem Server über die Firewall oder iptables-regeln geblockt sind. Auf cloudbasierten Servern, etwa bei Microsoft Azure, sind dazu in der Administrationsoberfläche noch zusätzliche Handgriffe auf Netzwerkebene erforderlich. Bei Azure findet sich in einer VM dazu der Menüpunkt „Netzwerk –› Regel für eingehenden Port hinzufügen“. Auf dem Relais muss der weitergeleitete Port, hier 8080 oder 2222, vor dem Aufbau des Tunnels noch frei sein. -dw