Dzięki @jensd, @unxnut za pomoc. na podstawie twoich komentarzy udało mi się rozwiązać problem.
Rozwiązanie wymagało dwóch kroków:
- zmienna DISPLAY powinna być odpowiednio ustawiona.
- gdy ssh'ing do zdalnego serwera, przełącznik -X musi być włączony
w moich poprzednich próbach brakuje jednego lub obu tych dwóch warunków.
W każdym razie dla późniejszych użytkowników, którzy to zobaczą, są przykłady pokazujące, co próbuję powiedzieć.
przypadek 1
moja lokalna maszyna nie będzie miała ustawionej zmiennej DISPLAY. A potem ssh na zdalny serwer z przełącznikiem -X, a następnie spróbuj wykonać 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.
jak widać błąd Error: Can't open display:
pojawia się na terminalu zdalnego serwera.
skrzynka 2
tym razem na komputerze lokalnym określę zmienną DISPLAY. Ale kiedy ssh'ing, nie włączę przełącznika -X. Rezultatem będzie awaria:
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 ~]$
na początku widać, że poprawnie ustawiłem zmienną DISPLAY. Ale nawet po ssh'ingu (bez przełącznika -X) xclock nie jest wykonywany.
* setenv | grep DISPLAY
Można zobaczyć tutaj inny wynik (porównaj z przypadkiem 1). w przypadku 2 wynik jest po prostu pusty. z drugiej strony wynikiem przypadku1 w tym wierszu poleceń jest DISPLAY: undefined variable
.... Nie jestem pewien, jak ta różnica jest spowodowana, ale mam przeczucie, że jest to związane z tym, czy spełniasz warunek 1. lub 2 .
skrzynka 3
tym razem poprawnie określę zmienną DISPLAY na komputerze lokalnym, a także ssh na zdalnym serwerze z włączonym przełącznikiem -X.
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 ~]$
z tym ustawieniem xclock
działa !! oto zrzut ekranu, aby udowodnić, że nie kłamię.
xclock został pomyślnie wyświetlony na moim komputerze lokalnym.
Ponownie sprawdź wynik setenv | grep DISPLAY
w tym przypadku. Teraz pokazuje DISPLAY=localhost:11.0
. Z tego, co wiem, jest to związane z MIT-MAGIC-COOKIE w pliku .Xauthority, ale ponieważ niewiele wiem na ten temat, nie pójdę dalej.
Wniosek: z trzech powyższych przypadków możemy potwierdzić, że aby zdalne X-Windows mogło być poprawnie wyświetlane, zarówno 1. zmienna DISPLAY lokalnej maszyny, jak i 2. -X
przełącznik ssh muszą być odpowiednio ustawione. Oczywiście zdalny serwer powinien umożliwiać przekazywanie X11.