ssh -X “Xt-Fehler: Anzeige kann nicht geöffnet werden :: 0.0”

9

Ich versuche, xtermauf 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?

Fabian
quelle
Können Sie vor dem SSHING xtermim aktuellen Terminal laufen ?
Enzotib
@belacqua: es ist nicht erforderlich. Normalerweise verbinde ich mich mit einem Remote-Headless-Server und kann problemlos Remote-X-Anwendungen auf dem lokalen X-Server ausführen.
Enzotib
@enzotib - danke; Das wusste ich nicht.
Belacqua
@enzotib sorry, ich habe deinen Kommentar nicht gesehen. Ja, ich kann xterm auf meinem lokalen Computer öffnen
Fabian

Antworten:

8

Wenn ssh die Verbindung herstellen kann, wird DISPLAYder richtige Wert festgelegt. Da Sie X11DisplayOffset10 (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 überschreiben DISPLAY. Der Wert :0(oder :0.0der 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 ist rshdoder sshdauch 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 einstellen DISPLAY. (Es gibt sehr wenige Fälle, in denen Sie DISPLAYmanuell einstellen müssen.)

Es gibt andere exotische Erklärungen. Dies kann passieren, wenn Sie Ihre Login-Shell in geändert habenscreen (theoretisch eine nette Idee, aber nicht praktisch) und eine Shell-Initialisierungsdatei haben, die zwangsweise DISPLAYin 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 ( AcceptEnvDirektive in sshd_config), der Client sendet DISPLAYund die X-Verbindung nicht hergestellt werden konnte. Oder es kann passieren, dass Sie über die commandDirektive in eine Umgebungsvariable auf dem Server festlegen ~/.ssh/authorized_keys. Oder xtermkönnte ein Skript sein.

¹ Oder was auch immer der Wert von X11DisplayOffsetin der Serverkonfiguration ist, aber es wird kaum jemals von der Standardeinstellung geändert.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Es wäre hilfreich, Möglichkeiten zur Behebung der verschiedenen von Ihnen genannten Probleme aufzulisten.
George Stocker
@GeorgeStocker Alle diese Probleme haben die Form "Es gibt einige Einstellungen in einer Konfigurationsdatei". Daher besteht die Lösung für all diese darin, die Einstellungen zu entfernen oder zu ändern. Gibt es eine bestimmte, die Sie identifizieren, aber nicht beheben können?
Gilles 'SO - hör auf böse zu sein'
Ich sehe DISPLAY=localhost:11.0in meinem env, aber seine Relevanz und ob ich es ändern sollte, DISPLAY 10.0ist unklar.
George Stocker
@ GeorgeStocker Dann stimmen Ihre Symptome nicht mit dieser Frage überein. Ich habe meine Antwort aktualisiert, um zu verdeutlichen, dass 10 der Grenzwert ist, unter dem diese Antwort gilt. 11 ist hier ein erwarteter Wert (wahrscheinlich die zweite aktive SSH-Verbindung mit X-Weiterleitung).
Gilles 'SO - hör auf böse zu sein'
Ich laufe DISPLAY=:0 xtermund erhalte immer noch den xterm: Xt error: Can't open display: :0Fehler, daher ist die Umgebungsvariable nicht das Problem.
Dan Dascalescu
3

Ihr Befehl sollte funktionieren, oder zumindest für mich. Versuchen Sie stattdessen Folgendes:

ssh -Y user@machine xterm

Bearbeiten (1):

Versuche dies:

ssh -X user@machine env

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:

ssh -X user@machine DISPLAY=10.0 xterm
ed.
quelle
Ich habe es versucht, -Yaber es hat auch nicht funktioniert. Ich bekomme immer nochCan't open display: :0.0
Fabian
Was läuft auf Ihrem lokalen Computer? Die: 0.0 ist über, da es die Standardeinstellung für einen ist lokalen X - Server, kein Remote - one ...
ed.
Ich benutze Ubuntu 10.04, Linux Mint 11 oder Mac OS X 10.7. Die Verwendung hängt vom Standort ab (Arbeit / Zuhause), aber der Fehler ist alle gleich
Fabian
Ich werde die Antwort bearbeiten ... (1)
ed.
Meine DISPLAY-Variable istlocalhost:10.0
Alexis Wilke
2

Die Zugriffskontrolle von X ist wahrscheinlich im Weg.

Führen Sie xhost +(vom Paket aus x11-xserver-utils) aus, um die Zugriffssteuerung vollständig zu deaktivieren.

Geert
quelle
2

Neben X11Forwarding yesmusste ich auch noch hinzufügen

X11UseLocalhost no

im /etc/ssh/sshd_config

wie hier beschrieben .

user2400538
quelle
1

Ich fand, dass xauth nicht installiert wurde.

Allen
quelle
0

Ü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/

Paul Maunders
quelle
-1

Sie sollten zuerst die Verbindung öffnen und nach dem Einrichten xterm öffnen.

animaletdesequia
quelle
Vielen Dank für Ihre Antwort. Was meinst du mit "Verbindung herstellen"? Wenn ich ssh -X name@machine und nach der Verbindung benutze, xtermerhalte ich den gleichen Fehler. Meinten Sie das? ;)
Fabian
Nein, es sollte auch ohne vorherige Verbindung funktionieren.
Enzotib
@ Fabian - Ich glaube, das hat er gemeint.
Belacqua
Ich denke, eine VNC-Verbindung ist notwendig.
Nanofarad
@enzotib, na ja ... stellt tatsächlich sshzuerst eine Verbindung her, dann wird xterm in dieser sshUmgebung gestartet . So oder so ist es so ziemlich dasselbe, nur wenn Sie es ssh -X remotezuerst verwenden, dann können Sie überprüfen, ob Sie mit überprüfen echo $DISPLAY, um sicherzustellen, dass $DISPLAYes auf dem Remote-Computer nach einem richtig eingestellt ist ssh -X.
Alexis Wilke