Ich versuche, xterm
auf meinem Remote-Server (Ubuntu Server 10.04) mit ssh zu öffnen :
ssh -X name@machine xterm
Der zurückgegebene Fehler lautet jedoch:
xterm Xt error: Can't open display: :0.0`
Ich googelte und versuchte alles, was ich fand. Immer noch diesen Fehler. Die DISPLAY-Variable sollte automatisch gesetzt werden, oder?
Teil von sshd_config
:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Irgendein Rat?
xterm
im aktuellen Terminal laufen ?Antworten:
Wenn ssh die Verbindung herstellen kann, wird
DISPLAY
der richtige Wert festgelegt. Da SieX11DisplayOffset
10 (den Standardwert) festgelegt haben, verwendet ssh die erste verfügbare Anzeige ab 10. Wenn Sie einen Wert unter 10¹ sehen, stört etwas die normale X11-Weiterleitung, die von ssh eingerichtet wurde, zumindest von überschreibenDISPLAY
. Der Wert:0
(oder:0.0
der Teil nach dem Punkt ist irrelevant) gibt die erste Anzeige an, die auf dem Computer gestartet wurde. In typischen Fällen handelt es sich dabei um die aktive Sitzung (oder die grafische Anmeldeaufforderung) auf der Computerkonsole.Die wahrscheinlichste Erklärung für das beobachtete Verhalten ist, dass eine Ihrer Shell-Konfigurationsdateien festgelegt ist
DISPLAY
. Der offensichtlichste Schuldige ist~/.bashrc
(der aufgrund einer Eigenart von Bash immer dann ausgeführt wird, wenn der Elternteil von Bash istrshd
odersshd
auch wenn die Shell nicht interaktiv ist). Eine andere Datei, die Umgebungsvariablen definiert, ist/etc/environment
. Wenn dies der Fall ist, liegt die Lösung auf der Hand: Nicht dort einstellenDISPLAY
. (Es gibt sehr wenige Fälle, in denen SieDISPLAY
manuell einstellen müssen.)Es gibt andere exotische Erklärungen. Dies kann passieren, wenn Sie Ihre Login-Shell in geändert haben
screen
(theoretisch eine nette Idee, aber nicht praktisch) und eine Shell-Initialisierungsdatei haben, die zwangsweiseDISPLAY
in den Bildschirm eingefügt wird (keine so gute Idee). Dies kann auch passieren, wenn Sie den Server so konfiguriert haben, dass er vom Client gesendete Umgebungsvariablen akzeptiert (AcceptEnv
Direktive insshd_config
), der Client sendetDISPLAY
und die X-Verbindung nicht hergestellt werden konnte. Oder es kann passieren, dass Sie über diecommand
Direktive in eine Umgebungsvariable auf dem Server festlegen~/.ssh/authorized_keys
. Oderxterm
könnte ein Skript sein.¹ Oder was auch immer der Wert von
X11DisplayOffset
in der Serverkonfiguration ist, aber es wird kaum jemals von der Standardeinstellung geändert.quelle
DISPLAY=localhost:11.0
in meinemenv
, aber seine Relevanz und ob ich es ändern sollte,DISPLAY 10.0
ist unklar.DISPLAY=:0 xterm
und erhalte immer noch denxterm: Xt error: Can't open display: :0
Fehler, daher ist die Umgebungsvariable nicht das Problem.Ihr Befehl sollte funktionieren, oder zumindest für mich. Versuchen Sie stattdessen Folgendes:
Bearbeiten (1):
Versuche dies:
Das sollte die ganze Umgebung zeigen. Es sollten verschiedene SSH-Dinge drin sein und auch DISPLAY. DISPLAY sollte 10.0 sein.
Sie können dies auch versuchen:
quelle
-Y
aber es hat auch nicht funktioniert. Ich bekomme immer nochCan't open display: :0.0
localhost:10.0
Die Zugriffskontrolle von X ist wahrscheinlich im Weg.
Führen Sie
xhost +
(vom Paket ausx11-xserver-utils
) aus, um die Zugriffssteuerung vollständig zu deaktivieren.quelle
Neben
X11Forwarding yes
musste ich auch noch hinzufügenim
/etc/ssh/sshd_config
wie hier beschrieben .
quelle
Ich fand, dass xauth nicht installiert wurde.
quelle
Überprüfen Sie außerdem, ob X11 auf der Clientseite installiert ist. Dieses Problem trat auf, als ich meinen Mac auf OS X Mountain Lion aktualisierte. Mountain Lion entfernt X11, daher müssen Sie es über das Open Source X Quartz-Projekt erneut installieren. http://xquartz.macosforge.org/landing/
quelle
Sie sollten zuerst die Verbindung öffnen und nach dem Einrichten xterm öffnen.
quelle
ssh -X name@machine
und nach der Verbindung benutze,xterm
erhalte ich den gleichen Fehler. Meinten Sie das? ;)ssh
zuerst eine Verbindung her, dann wird xterm in dieserssh
Umgebung gestartet . So oder so ist es so ziemlich dasselbe, nur wenn Sie esssh -X remote
zuerst verwenden, dann können Sie überprüfen, ob Sie mit überprüfenecho $DISPLAY
, um sicherzustellen, dass$DISPLAY
es auf dem Remote-Computer nach einem richtig eingestellt istssh -X
.