X-Server über SSH tunneln

X-Server über SSH tunneln

Vielleicht hast du bereits erfolgreich SSH gearbeitet und möchtest nun mit X-Server und SSH arbeiten. In der Regel besteht ein Tunnel aus den beiden Endpunkten und einer oder mehrerer Verbindungen durch diesen. Neben den Klassikern wie einem sicheren Tunnel zum Transport von Emails, kann man auch X tunneln.

X Server, also grafischer Oberflächen, durch einen Tunnel zu bekommen ist danz einfach. Die Erfinder des SSH Protokolls haben bereits daran gedacht und die -X Option eingebaut.

Diese Anleitung setzt einen X-Server voraus und funktioniert gut auf Linux und auf Mac nur dann, wenn XQuartz installiert ist und läuft.

Das Szenario

Wir haben keinen direkten Zugriff auf den Rechner, auf dem wir beispielsweise Firefox starten wollen, die Bildschirmausgabe aber gern lokal hätten.

Es gibt drei Rechner: Home, Gateway und Ziel. Diese Beispiel benutzt einen dritten Rechners, dem Gateway. Gateway und Ziel können aber auch identisch sein. Dann ist das Ganze allerdings viel einfacher mit ssh -X zu lösen. Siehe dazu SSH Tunnel mit Linux erstellen.

Das Ziel

Man möchte von Home aus ein grafisches Programm auf Ziel starten, kann diesen Rechner aber nur via Gateway erreichen. Gateway könnte ein Rechner sein, der eine öffentliche IPv4 Adresse hat und damit erreichbar ist. Das Ziel ist über diesen Gateway erreichbar und liegt möglicherweise in einem privaten Netzwerk. Du kennst dies vielleicht schon von der Fritz!Boz (als Router) zuhause. Alle internen Geräte sind „geNATtet“. Das bedeutet, dass eine sogenannte Network Address Translation (NAT) stattfindet. Die fritz!Box übersetzt die Netzwerkadressen aller Teilnehmer im lokalen Netzwerk. Dadurch sind diese nicht direkt aus dem Internet erreichbar. Um diese erreichbar zu machen, muss auf dem Router Port-Weiterleitung (Port-Forwarding) eingerichtet sein.

Im Weiteren gehe ich davon aus, dass der Port 22 (ssh Standard) vom Router auf den Gateway weitergeleitet wird oder dieser direkt erreichbar ist.

Die Lösung, der Tunnel

  1. ssh Tunnel zum Ziel via Gateway: ssh -L 2022:Ziel:22 Gateway  erzeugt lokal einen Port 2022 der auf Ziel:22 umgeleitet wird und zwar durch den SSH Tunnel mit dem Gateway
  2. X via ssh vom Ziel durch den Gateway tunneln: (auf Home) ssh -p 2022 -X -l user localhost
  3. Firefox oder anderes grafisches Programm auf Ziel starten.

Siehe auch SSH Tunnel mit Linux erstellen