Dzięki przekierowaniu SSH X11 (`ssh -X`) otrzymujesz` Can't open display` próbując uruchomić aplikacje X.


22

Jestem w stanie zalogować się, aby zerwać za pomocą

ssh -X Hostip

ale kiedy uruchomię polecenie xclock, pojawia się ten błąd

Error: Can't open display: localhost:11.0

Sprawdzam swoją wartość wyświetlania za pomocą

echo $DISPLAY

i wynik jest

localhost:11.0

A przekazywanie X11 jest ustawione na TAK w pliku sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

Jakaś rada, której tu brakuje?


3
Próbowałeś -Yzamiast -X?
Flup

2
Upewnij się także, że rozumiesz konsekwencje używania -Yzamiast -X. Możesz także przyjrzeć się xhost.
CVn

1
Dla RedHat / CentOS 7 (przynajmniej) potrzebujesz pakietu xorg-x11-xauth, zgodnie z moją odpowiedzią tutaj: unix.stackexchange.com/questions/138936/…
Mike S

Odpowiedzi:


18

Zastosowanie -Y. Ze strony podręcznika ssh:

-Y Umożliwia zaufane przekazywanie X11. Zaufane przekazywanie X11 nie podlega kontrolom rozszerzenia X11 SECURITY.

Jeśli nadal masz problemy, możesz spróbować ustawić $DISPLAYadres IP swojej skrzynki lokalnej :

$ export DISPLAY='<ip_address>:11.0'

Może działać, aby ustawić go jako

$ export DISPLAY='127.0.0.1:11.0'

Ludzie wydają się mieć ten problem powszechnie gdy ssh'ing z Mac OS X . Możesz także chcieć ustawić

X11UseLocalhost no

również w tym przypadku.


1
Używając XQuartz nie mogłem użyć flagi -Y. „Połączenie X11 odrzucone z powodu nieprawidłowego uwierzytelnienia”.
Erik

5
nawet po wypróbowaniu innych sugestii nie mogę otworzyć wyświetlacza.
Erik

2
Żaden z nich też nie działał dla mnie. Musiałem zainstalować obsługę XWindow na moim serwerze Centos 7 (minimalnie) z: yum groupinstall „X Window System” -y
Mark Edington

@ MarkEdington dzieje się tak, ponieważ RedHat / CentOS wymaga pakietu xorg-x11-xauth, zgodnie z moją odpowiedzią tutaj: unix.stackexchange.com/questions/138936/...
Mike S

6

to działało dla mnie:

Zmiana

X11UseLocalhost yes

do

X11UseLocalhost no

Dzięki, Don. to również działało dla mnie. Dałem ci głos. Uważam, że problem z domyślnymi ustawieniami polegał na tym, że konkretna maszyna obsługuje xhost.
LD James

6
na gościa? gospodarz? który plik konfiguracyjny? dzięki za uzupełnienie odpowiedzi
Philippe Gachoud,

Zrobiłem to, upuszczając ustawienia do /etc/ssh/sshd_config.
llinfeng

6

Kredyt na /unix//a/12772/61349 za instrukcje diagnostyczne.

Upewnij się, że klient ssh żąda przekazywania X11 z flagą -v

ssh example.com -X -v

I poszukaj konkretnego komunikatu:

debug1: Requesting X11 forwarding with authentication spoofing.

Kolejnym oznaką problemu jest brak DISPLAYustawionego beign zmiennej środowiskowej. Jeśli jest puste / wyłączone, coś jest nie tak. Przynajmniej zgodnie z tym samym wpisem przypisanym powyżej , zmienne te są ustawiane automatycznie.


Używałem SSH Control Master moich połączeń ssh w taki sposób:

Host <hostname>
    ControlMaster auto
    ControlPath ~/.ssh/control/%r@%h:%p
    ControlPersist 10m

Moje wcześniejsze połączenie ssh nie wymagało przekazywania X11, dlatego sshopcje przyszłych połączeń nie były używane. Więc dla mnie

ssh -Xbyło całkowicie ignorowane

Jeśli nie widzisz „Żądanie przekazywania X11”, ale widzisz, że multiplekser używa sesji ponownie;

debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 10

Następnie musisz wyjść z bieżącego ControlMaster dla tego połączenia i ponownie połączyć się z flagą -X / -Y.

Aby zatrzymać ControlMaster

ssh -O check <hostname>

Master running (pid=2758)

(Spowoduje to zamknięcie wszystkich aktywnych połączeń za pomocą ControlMaster)

ssh -O exit <hostname>

Exit request sent.

3

Podczas próby przekazania do XQuartz na macOS naprawiłem problem, uruchamiając sshpolecenie ( ssh -Yw moim przypadku) z terminala XQuartz (otwierane przez kliknięcie prawym przyciskiem myszy ikony XQuartz w stacji dokującej i kliknięcie Aplikacje> Terminal).


to zadziałało dla mnie
dli

3

Tym, co naprawiło to dla mnie, jest po prostu instalacja Xauth, gdy raz to zrobiło, działało jak urok!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.