Fall 1

Fall 1

Ich habe mich bei einem Remote-Server angemeldet und versuche, eine X-Anwendung (z. B. Firefox) anzuzeigen. Es wird jedoch eine Fehlermeldung angezeigt. Im Folgenden sind meine Versuche aufgeführt, Firefox zu öffnen.

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ exit
logout
Connection to 143.248.146.204 closed.

Black@Black-PC ~
$ ssh -Y kwagjj@$labserver -p 122
[kwagjj@James5 ~]$ firefox
Error: no display specified
[kwagjj@James5 ~]$ 

Ich habe -X, -Y verwendet, weil ich irgendwo gelesen habe, dass diese beiden Optionen mit Anmeldeinformationen für X11 zusammenhängen und diese Schalter für mich funktionieren. Auch ohne die Schalter -X, -Y schlug mein Versuch fehl.

Was bedeutet der Fehler „Keine Anzeige angegeben“?

PS: Das Seltsame ist, dass es funktioniert, wenn ich mich über mein PUTTY mit dem Remote-Server verbinde und den Befehl „Firefox“ wiederhole?!?! (Firefox wird auf dem lokalen Computer angezeigt)

PS: Mein lokaler Computer ist Windows 7, daher läuft Xming im Hintergrund, um die X11-Anzeige zu ermöglichen. Was den oben beschriebenen Versuch betrifft, wurden die Befehle im Cygwin-Terminal eingegeben.

Antwort1

Ich bin gerade auf dieses Problem gestoßen, als ich eine Verbindung zu einem Headless-RHEL7-Server hergestellt habe.

Sie müssen das Paket xorg-x11-xauth auf Ihrem Host installiert haben, damit die Variable DISPLAY festgelegt und ordnungsgemäß autorisiert werden kann.

Hoffe, ich konnte jemandem etwas Zeit sparen.

Antwort2

Stellen Sie sicher, dass die DISPLAY-Variable in Ihrer Cygwin-Umgebung gesetzt ist:

export DISPLAY=:0.0

Überprüfen Sie nach dem Verbinden per SSH, ob diese Shell auch die richtige DISPLAY-Variable kennt, mit:

echo $DISPLAY

Antwort3

Vielen Dank an @jensd und @unxnut für die Hilfe. Anhand Ihrer Kommentare konnte ich das Problem herausfinden.

Die Lösung erforderte zwei Schritte:

  1. die DISPLAY-Variable sollte richtig eingestellt sein.
  2. beim SSH-Zugriff auf einen Remote-Server muss der Schalter -X aktiviert sein

Bei meinen bisherigen Versuchen fehlte eine oder beide dieser beiden Bedingungen.

Wie dem auch sei, für spätere Benutzer, die dies sehen, hier sind Beispiele, die zeigen, was ich sagen möchte.

Fall 1

auf meinem lokalen Rechner ist keine DISPLAY-Variable festgelegt. Dann stelle ich mit dem Schalter -X eine SSH-Verbindung zum Remote-Server her und versuche dann, die Ausführung durchzuführen xclock.

Black@Black-PC ~
$ echo $DISPLAY

## the blank means that DISPLAY variable has not been specified##
Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:23:13 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep $DISPLAY
DISPLAY: Undefined variable.

wie Sie sehen, Error: Can't open display:wird am Remote-Server-Terminal ein Fehler angezeigt.

Fall2

Dieses Mal werde ich auf dem lokalen Rechner die Variable DISPLAY angeben. Aber wenn ich per SSH nutze, werde ich den Schalter -X nicht aktivieren. Das Ergebnis wird ein Fehler sein:

Black@Black-PC ~
$ export DISPLAY=:0.0

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh kwagjj@$labserver -p 122
Last login: Tue Jun 24 22:33:32 2014 from 
[kwagjj@James5 ~]$ xclock
Error: Can't open display:
[kwagjj@James5 ~]$ setenv | grep DISPLAY
[kwagjj@James5 ~]$ 

am Anfang können Sie sehen, dass ich die DISPLAY-Variable richtig eingestellt habe. Aber trotzdem wird nach dem SSH (ohne den Schalter -X) die xclock nicht ausgeführt.

*Hier ist ein anderes Ergebnis setenv | grep DISPLAYzu sehen (vergleichen Sie mit Fall 1). In Fall 2 ist das Ergebnis einfach leer. Andererseits ist das Ergebnis von Fall 1 für diese Befehlszeile DISPLAY: undefined variable.... Ich bin nicht sicher, wodurch dieser Unterschied bedingt ist, aber ich habe das Gefühl, dass es damit zusammenhängt, ob Sie Bedingung 1 oder 2 erfüllt haben.

Fall 3

Dieses Mal werde ich die DISPLAY-Variable auf dem lokalen Computer richtig angeben und mit aktiviertem -X-Schalter auch eine SSH-Verbindung zum Remote-Server herstellen.

Black@Black-PC ~
$ echo $DISPLAY
:0.0

Black@Black-PC ~
$ ssh -X kwagjj@$labserver -p 122
Warning: untrusted X11 forwarding setup failed: xauth key data not generated
Warning: No xauth data; using fake authentication data for X11 forwarding.
Last login: Tue Jun 24 22:37:27 2014 from 
[kwagjj@James5 ~]$ xclock &
[1] 9174
[kwagjj@James5 ~]$ setenv | grep DISPLAY
DISPLAY=localhost:11.0
[kwagjj@James5 ~]$

mit dieser Einstellung xclockfunktioniert es!! Hier ist ein Screenshot, der beweist, dass ich nicht lüge. Bildbeschreibung hier eingeben Die X-Clock wird erfolgreich auf meinem lokalen Computer angezeigt.

Schauen Sie sich das Ergebnis setenv | grep DISPLAYin diesem Fall noch einmal an. Es zeigt jetzt DISPLAY=localhost:11.0. Soweit ich weiß, hängt dies mit MIT-MAGIC-COOKIE in der .Xauthority-Datei zusammen, aber da ich nicht viel darüber weiß, gehe ich nicht weiter darauf ein.

Fazit: Aus den drei oben genannten Fällen können wir bestätigen, dass für die korrekte Anzeige von Remote-X-Windows sowohl 1. die DISPLAY-Variable des lokalen Rechners als auch 2. der SSH- -XSwitch richtig eingestellt sein müssen. Natürlich sollte der Remote-Server X11-Weiterleitung zulassen.

Antwort4

Ich hatte ein ähnliches Problem mit einem Debian-basierten System (Proxmox) und das Problem lag daran, dass Xorg nicht installiert war. Nachdem apt-get install xorgFirefox zu funktionieren begann.

verwandte Informationen