
Ich betreibe einen Ubuntu-Server in VMWare. Und ich möchte X11 vom Ubuntu-Gast an den Mac-Host weiterleiten.
Ich habe es XQuartz 2.7.9 (xorg-server 1.17.4)
auf dem Mac-Host installiert.
Und die SSH-Weiterleitung auf Ubuntu ist aktiviert.
Dann habe ich Folgendes in iTerm versucht:
%> echo $DISPLAY
/private/tmp/com.apple.launchd.mjxVyILVrR/org.macosforge.xquartz:0
%> ssh -X root@xxxx
# echo $DISPLAY
# gnome-terminal
Unable to init server: Could not connect: Connection refused
Failed to parse arguments: Cannot open display
$DISPLAY ist leer und die X11-Weiterleitung funktioniert nicht.
Irgendwelche Ideen?
Antwort1
Versuchen Sie, ssh -Y root@xxxx
inxterm
innenXQuartz statt von iTerm. Funktioniert das?
Antwort2
Öffnen Sie /etc/ssh/sshd_config im Remote-System und setzen Sie X11Forwarding auf yes . Starten Sie dann den SSH-Dienst neu und versuchen Sie es erneut
Antwort3
Korrigieren Sie mich, wenn ich falsch liege. Sie möchten von Ihrem Mac aus remote auf Ihren Ubuntu-Rechner zugreifen und wenn Sie sich per SSH in Ihr Ubuntu einloggen und versuchen, „echo $DISPLAY“ einzugeben, erhalten Sie eine leere Antwort. Die folgende Lösung funktioniert in Ihrem Fall wahrscheinlich nicht, aber probieren Sie es aus, wenn das, was Sie versucht haben, dem ähnelt, was ich versucht habe.
Wie Sie bereits festgestellt haben, muss zuerst die DISPLAY-Variable gefunden werden.
Wenn Sie also auf Ihrem Mac als normaler Benutzer tippen
echo $DISPLAY
Dann würden Sie etwa Folgendes erhalten (Sie halten den Koffer in der Hand). Jedenfalls würden Sie alle etwas Ähnliches in Ihren Systemen sehen.
/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
Versuchen Sie dann etwas wie
xeyes
Und jetzt wissen Sie, dass Ihr Display funktioniert
Wenn Sie nun dasselbe als Root versuchen möchten (bitte greifen Sie mich nicht an, Leute, ich weiß, dass einige von Ihnen stark gegen Root-Zugriff sind), aber es nicht funktioniert, führen Sie in Ihrer Root-Eingabeaufforderung Folgendes aus
export DISPLAY=/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
Dasselbe, das Sie in Ihrem normalen Benutzerkonto gefunden haben. Kopieren Sie dann Ihre '.Xauthority' unter '/Users/normal user/.Xauthority' nach '/var/root/'. Die .Xauthority-Datei ist bereits dort, aber dies würde sie überschreiben.
cp /Users/normal user/.Xauthority /var/root/
Natürlich könnte der Export funktionieren, aber es schadet nicht, das oben Genannte zu tun. Versuchen Sie nun Folgendes.
echo $DISPLAY
Und Sie sollten Folgendes sehen
/private/tmp/com.apple.launchd.0aQYNoXMFK/org.xquartz:0
Wenn Sie sich über die normale Benutzeraufforderung per SSH bei Ubuntu anmelden, müssen Sie den Root-Teil nicht ausführen. Da ich aber Root zum SSH-Anmelden bei meinen Ubuntu-Systemen verwende, muss ich dies häufig tun.
Geben Sie dann bei der SSH-Anmeldung zu Ubuntu Folgendes ein:
echo $DISPLAY
Und Sie würden etwa Folgendes sehen
localhost:10.0
Das oben genannte würde funktionieren, wenn Sie alle anderen Teile wie Weiterleitung usw. erledigt haben.
Nochmals: Wenn Sie Root in Ihrem Ubuntu verwenden möchten und „echo $DISPLAY“ keine Antwort erzeugt, versuchen Sie Folgendes (vorausgesetzt, Sie befinden sich an der Root-Eingabeaufforderung).
cp /home/user name/.Xauthority /root/.Xauthority
Versuchen Sie jetzt
echo $DISPLAY
erneut und Sie würden etwa Folgendes sehen
localhost:10.0
Versuchen Sie es zum Spaß
xeyes
Und in meinem Fall funktioniert es. Ich hoffe, das ist hilfreich und löst ein Problem wie das oben genannte oder eines wie meines, auf das jemand gestoßen ist und der ein paar Stunden damit verbracht hat, sich am Kopf zu kratzen und wie ich versucht hat, sich die Haare auszureißen :-)).
Antwort4
Nachdem ich viele verschiedene Optionen ausprobiert habe, hat das hier bei mir funktioniert:
Auf meinem Mac:
Ich starte zuerst xQuartz. Dann gehe ich zu meinem Terminal und führe aus export DISPLAY=localhost:0
.
Auf meinem Remote-Linux-PC:
Ich hatte Probleme mit Wayland, also ging ich zu /etc/gdm/custom.conf
und habe die Zeile auskommentiert WaylandEnable=false
. Ich habe auch gesetzt export XAUTHORITY=$HOME/.Xauthority
. Und zuletzt habe ich gesetzt, export QT_QPA_PLATFORM=xcb
wodurch einige grafische Bibliotheken in Python funktionierten.
Nachdem Sie dies eingerichtet haben, können Sie sich jetzt per SSH bei Ihrem Remote-Server anmelden ssh -Y remoteserver@IP
und hoffentlich sollte dies funktionieren.