X11 Forwarding über SSH verwenden

Führen Sie ssh -X user@server aus und starten Sie dann ein grafisches Programm wie xeyes. Sein Fenster öffnet sich auf Ihrem Bildschirm. Der Server braucht X11Forwarding yes in sshd_config und ein installiertes xauth, und Ihr Rechner braucht einen laufenden X-Server, was auf einem Mac XQuartz bedeutet. -Y gibt dem Programm vollen Zugriff auf Ihre Anzeige, nutzen Sie es also nur mit Servern, denen Sie vertrauen.

Nutzen Sie X11 nur, um eine Datei auf dem Server in einem grafischen Editor zu bearbeiten? Wardterm hat einen Editor für Serverdateien eingebaut. Zeigen

Aktualisiert am . OpenSSH-10.0-Client und -Server unter Debian 13 in Wegwerf-Containern, mit Xvfb als Anzeige und xeyes, xdpyinfo und xwd als Programmen.

Den Server einrichten

Installieren Sie xauth und ein kleines Programm zum Testen:

sudo apt install xauth x11-apps

Setzen Sie in /etc/ssh/sshd_config:

X11Forwarding yes

Der Standard von OpenSSH ist no, obwohl die Konfigurationsdatei unter Debian es auf yes setzt. Laden Sie nach einer Änderung neu:

sudo sshd -t && sudo systemctl reload ssh

Auf manchen Systemen heißt der Dienst sshd.

Verbinden und testen

ssh -X user@server
echo $DISPLAY
xeyes

DISPLAY sollte wie localhost:10.0 aussehen. Das ist der Proxy, den sshd auf dem Server anlegt, nicht Ihre echte Anzeige. Setzen Sie DISPLAY nicht von Hand.

Um es für einen Server dauerhaft zu machen, nutzen Sie ~/.ssh/config:

Host server
  ForwardX11 yes

-X oder -Y

-X, nicht vertrauenswürdig-Y, vertrauenswürdig
Zugriff auf Ihre AnzeigeBegrenzt durch die X11-SECURITY-ErweiterungVoll
Screenshot der ganzen Anzeige mit xwd -rootGescheitert: unable to get imageFunktionierte
Eigenschaften anderer Fenster mit xpropFunktionierteFunktionierte
ZeitlimitNeue Fenster werden nach 20 Minuten abgelehntKeines

Nicht vertrauenswürdig ist der Standard von Upstream für -X. Diese Ergebnisse stammen aus unserem Test mit Xvfb und eingeschalteter X-Authentifizierung. Ohne Authentifizierung begrenzte -X nichts. -X verringert also, was ein Programm erreichen kann, isoliert es aber nicht. Manche Programme verlieren in diesem Modus Funktionen: xeyes meldete extension "XInputExtension" missing und öffnete sich trotzdem.

Öffnen sich unter -X nach 20 Minuten keine Fenster mehr und es erscheint Can't open display, erhöhen Sie das Limit in ~/.ssh/config, zum Beispiel mit ForwardX11Timeout 8h.

Unter Debian und Ubuntu verhält sich -X wie -Y

Der Client von Debian setzt standardmäßig ForwardX11Trusted yes, daher ist -X dort vertrauenswürdig. In unserem Test zeigte ssh -G unter Debian 13 yes und unter macOS no. Für den strengeren Modus unter Debian fügen Sie -o ForwardX11Trusted=no hinzu, so haben wir den Test ohne Vertrauen ausgeführt. Was Ihr Client tut, sehen Sie mit:

ssh -G server | grep -i forwardx11

Das Sicherheitsrisiko

Bei vertrauenswürdiger Weiterleitung kann ein Programm auf dem Server Ihren Bildschirm aufnehmen und Tasten mitlesen, die Sie in anderen Fenstern tippen. Das kann auch jeder, der auf dem Server an den Dateiberechtigungen vorbeikommt, etwa root, denn er erreicht dieselbe weitergeleitete Anzeige. Leiten Sie X11 nicht an einen Server weiter, dem Sie nicht vertrauen. Nutzen Sie -Y nur, wenn ein Programm mit -X scheitert.

Die Weiterleitung des SSH-Agents birgt ein ähnliches Risiko für Ihre Schlüssel: siehe Risiken der SSH-Agent-Weiterleitung.

Auf einem Mac: XQuartz

macOS hat keinen X-Server. Installieren Sie XQuartz und melden Sie sich dann ab und wieder an, damit DISPLAY in Ihrer Sitzung gesetzt wird. Unter Debian haben wir bestätigt, was bei leerem DISPLAY passiert: Ist echo $DISPLAY leer, verbindet sich ssh -X ohne Weiterleitung und ohne sichtbaren Fehler. Nur ssh -v sagt Ihnen X11 forwarding requested but DISPLAY not set.

Der macOS-Client sucht xauth standardmäßig unter /usr/X11R6/bin/xauth. Beschwert er sich, verweisen Sie in ~/.ssh/config auf das von XQuartz, das normalerweise unter /opt/X11 installiert wird:

Host *
  XAuthLocation /opt/X11/bin/xauth

Fehler

MeldungUrsachePrüfen
X11 forwarding request failed on channel 0X11Forwarding no auf dem Server oder dort kein xauth. Wir bekamen das für beidessudo sshd -T | grep -i x11forwarding und which xauth
Error: Can't open display: ohne etwas dahinterDISPLAY ist leer, die Weiterleitung ist also ausecho $DISPLAY auf beiden Seiten und ssh -v
Warning: untrusted X11 forwarding setup failed: xauth key data not generatedKein xauth auf Ihrem Rechnerwhich xauth, dann XAuthLocation setzen

Fragen

Was ist der Unterschied zwischen ssh -X und ssh -Y?

-X ist die nicht vertrauenswürdige Weiterleitung, eingeschränkt durch die X11-SECURITY-Erweiterung. -Y ist vertrauenswürdig und gibt dem Programm vollen Zugriff auf Ihr Display. Unter Debian und Ubuntu ist -X standardmäßig vertrauenswürdig.

Warum verbindet ssh -X, aber es öffnet sich kein Fenster?

Die Weiterleitung ist nicht gestartet. Entweder ist DISPLAY auf Ihrem Rechner leer, oder der Server hat X11Forwarding no oder kein xauth. ssh -v zeigt, was zutrifft.

Brauche ich XQuartz auf dem Mac?

Ja. macOS hat keinen X-Server. Installieren Sie XQuartz, melden Sie sich ab und wieder an und nutzen Sie dann ssh -X.

Funktioniert X11 Forwarding unter Wayland?

Ja, über XWayland, das die meisten Wayland-Desktops mitbringen. Zeigt echo $DISPLAY auf Ihrem Rechner einen Wert wie :0, funktioniert ssh -X wie gewohnt, und die Programme öffnen sich als X11-Fenster.

Warum ist X11 Forwarding so langsam?

X11 schickt viele Anfragen zwischen Programm und Bildschirm hin und her, deshalb zählt die Latenz des Netzes mehr als die Bandbreite. ssh -C komprimiert den Verkehr und hilft bei langsamen Leitungen. Für einen ganzen Desktop über das Internet ist VNC oder RDP durch einen SSH-Tunnel meist flüssiger.

Quellen

Mehr zu Sitzungen und tmux

Alle Anleitungen