Vielen Dank an @jensd, @unxnut für die Hilfe. Aufgrund Ihrer Kommentare konnte ich das Problem herausfinden.
Die Lösung benötigte zwei Schritte:
- Die Variable DISPLAY sollte richtig eingestellt sein.
- Wenn Sie eine Verbindung zum Remote-Server herstellen, muss der Schalter -X aktiviert sein
Bei meinen vorherigen Versuchen fehlen eine oder beide dieser beiden Bedingungen.
Für spätere Benutzer, die dies sehen, sind hier Beispiele, um Ihnen zu zeigen, was ich zu sagen versuche.
Fall 1
Auf meinem lokalen Computer ist keine DISPLAY-Variable festgelegt. Und dann werde ich mit -X-Schalter auf Remote-Server ssh und dann versuchen, auszufü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.
case2
Dieses Mal werde ich auf dem lokalen Computer die Variable DISPLAY angeben. Aber wenn ich ssh'ing bin, werde ich den -X-Schalter nicht einschalten. 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 ~]$
Zu Beginn sehen Sie, dass ich die Variable DISPLAY richtig eingestellt habe. Aber auch so wird nach ssh'ing (ohne den Schalter -X) die xclock nicht ausgeführt.
* Ein anderes Ergebnis mit setenv | grep DISPLAY
ist hier zu sehen (vergleiche mit case1). in case2 ist das Ergebnis einfach leer. Auf der anderen Seite ist das Ergebnis von case1 für diese Befehlszeile DISPLAY: undefined variable
.... Ich bin nicht sicher, wie dieser Unterschied verursacht wird, aber ich bekomme eine Vermutung, dass es damit zusammenhängt, ob Sie entweder Bedingung 1 oder 2 erfüllt haben .
case3
Dieses Mal werde ich die DISPLAY-Variable auf dem lokalen Computer und auch ssh an den Remote-Server mit eingeschaltetem -X-Schalter korrekt angeben.
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 ~]$
xclock
funktioniert mit dieser einstellung !! Hier ist ein Screenshot, der zeigt, dass ich nicht lüge.
Die Uhr wird erfolgreich auf meinem lokalen Computer angezeigt.
Überprüfen Sie setenv | grep DISPLAY
in diesem Fall erneut das Ergebnis von . 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.
Schlussfolgerung: In den drei oben genannten Fällen können wir bestätigen, dass für die ordnungsgemäße Anzeige von Remote-X-Windows sowohl die Variable 1. DISPLAY des lokalen Computers als auch der -X
Schalter 2. ssh ordnungsgemäß festgelegt sein müssen. Natürlich sollte der Remote-Server X11forwarding zulassen.