Wenn ein Desktop auf einem Linux-Rechner gestartet ist, geschieht die Kommunikation der grafischen Oberfläche mit dem Betriebssystem über einen X-Server. Dieser bildet eine Zwischenschicht zwischen dem Desktop und dem Betriebssystem. Grundsätzlich wird dabei das interne Netzwerk des Rechners verwendet, auch wenn der Rechner nicht in einem Netzwerk stehen sollte.
Das Praktische an dem X-Protokoll ist die Netzwerktransparenz. So ist ein X-Server ist nicht auf den lokalen Rechner angewiesen, man kann mit ihm auf andere Rechner zugreifen und andere Rechner können den lokalen X-Server verwenden. Sofern lokaler und entfernter Rechner beide Unix-/Linux-Systeme beinhalten, werden somit Zusatzprotokolle wie VNC und RDP überflüssig.
Das ist auch gut so, denn bei VNC und RDP wird die graphische Ausgabe auf dem entfernten Rechner erzeugt und dann über das Netzwerk transportiert. Wohingegen bei X auf dem lokalen Rechner gerendert wird. Somit wird Traffic und eine Belastung des Remote-Rechners gespart.
Allerdings der große Nachteil von X ist die unverschlüsselte Übertragung der Daten. Das lässt sich allerdings wieder mit einer Tunnelung abfangen.
Voraussetzung ist hierbei, dass in der Datei /etc/ssh/sshd_config mit folgenden Parameter das X11-Forwarding gesetzt ist.
X11Forwarding yes
Dann kann man sich mit der Option -X per ssh einlogen
ssh -X username@remote-rechner
und dann das gewünschte Programm auf dem Remote-Rechner starten. Dasselbe erreicht man über einen Direktaufruf
ssh -X username@remote-rechner /pfad/programm-aufruf
Somit werden anstelle eines kompletten Remote-Desktop nur die jeweiligen entfernten Anwendungen gestartet. Was ernorm an Resourcen einsparen hilft. So können auch Programme auf einem kleinen Raspberry Pi-Rechner, die zur Netzwerk-Überwachung laufen direkt auf den eigenen Desktop geholt werden.
Mit Hilfe eines geschachtelten (nested) X-Servers kann man zwei und mehr X-Server im Haupt-X-Server (:0) laufen lassen. Hierzu existertdas Tool Xephyr, das man sich wie folgt installieren kann.
Für Debian-Systeme
apt-get install xserver-xephyr
Für OpenSuSE-Linux
zypper install xorg-x11-server-extra
Ein Terminal kann man dann mit
Xephyr :1 -screen 1024x768 -dpi 96 -keybd ephyr,,,,xkblayout=de & DISPLAY=:1 ssh -X username@remote-machine xterm &
starten.