Zalogowałem się na zdalnym serwerze i próbuję wyświetlić aplikację X (np. Firefox). ale pojawia się komunikat o błędzie. poniżej są moje próby otwarcia firefoxa
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 ~]$
Użyłem -X, -Y, ponieważ gdzieś przeczytałem, że te dwie opcje są powiązane z poświadczeniami dotyczącymi X11 i te przełączniki wykonają za mnie zadanie. Nawet bez przełączników -X, -Y moja próba się nie powiodła.
Co oznacza błąd „brak wskazania wyświetlacza”?
PS Dziwną rzeczą jest to, że jeśli połączę się ze zdalnym serwerem za pośrednictwem PUTTY i powtórzę polecenie „firefox”, to zadziała?!?! (Firefox jest wyświetlany na komputerze lokalnym)
PS moim lokalnym komputerem jest Windows 7, więc mam Xming działający w tle, aby umożliwić wyświetlanie X11. Jeśli chodzi o próbę napisaną w górnej części, polecenia zostały wpisane w terminalu Cygwin.
DISPLAY
zmienna nie została ustawiona. więc ustawiłem go zexport DISPLAY=:0.0' and executed
xclock` i pojawiła się xclock. Ale kiedy zalogowałem się do zdalnego serwera za pośrednictwem ssh i spróbowałemxclock
ponownie, mówiError: Can't open display:
Odpowiedzi:
Upewnij się, że masz zmienną DISPLAY w swoim środowisku cygwin:
po połączeniu z SSH sprawdź, czy powłoka zna również poprawną zmienną DISPLAY za pomocą:
źródło
echo $DISPLAY
. Ale wciąż zmienna DISPLAY na zdalnym serwerze jest ustawiona na nic.Error: Can't open display: :0.0
export DISPLAY=localhost:0
Właśnie natrafiłem na ten problem podczas łączenia się z bezgłowym serwerem RHEL7.
Potrzebujesz pakietu xorg-x11-xauth zainstalowanego na twoim hoście, aby zmienna DISPLAY mogła zostać ustawiona i być odpowiednio autoryzowana.
Mam nadzieję, że zaoszczędziłem komuś czas.
źródło
ssh -X
echo $DISPLAY
xterm &
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:
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
.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:
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ń jestDISPLAY: 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.
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 pokazujeDISPLAY=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.źródło