Mam komputer domowy i służbowy, komputer domowy ma statyczny adres IP.
Jeśli ssh z komputera służbowego na komputer domowy, połączenie ssh działa, ale aplikacje X11 nie są wyświetlane.
W moim /etc/ssh/sshd_config
domu:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
W pracy wypróbowałem następujące polecenia:
xhost + home HOME_IP
ssh -X home
ssh -X HOME_IP
ssh -Y home
ssh -Y HOME_IP
Mój /etc/ssh/ssh_config
w pracy:
Host *
ForwardX11 yes
ForwardX11Trusted yes
Mój ~/.ssh/config
w pracy:
Host home
HostName HOME_IP
User azat
PreferredAuthentications password
ForwardX11 yes
Mój ~/.Xauthority
w pracy:
-rw------- 1 azat azat 269 Jun 7 11:25 .Xauthority
Mój ~/.Xauthority
w domu:
-rw------- 1 azat azat 246 Jun 7 19:03 .Xauthority
Ale to nie działa
Po nawiązaniu połączenia ssh z domem:
$ echo $DISPLAY
localhost:10.0
$ kate
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
X11 connection rejected because of wrong authentication.
kate: cannot connect to X server localhost:10.0
Używam iptables
w domu, ale pozwoliłem na port 22. Zgodnie z tym, co przeczytałem, to wszystko, czego potrzebuję.
UPD.
Z-vvv
... debug2: start oddzwaniania debug2: x11_get_proto: / usr / bin / xauth list: 0 2> / dev / null debug1: Żądanie przekazywania X11 z podszywaniem się pod uwierzytelnianie. debug2: kanał 1: żądanie x11-req potwierdź 1 debug2: client_session2_setup: id 1 debug2: fd 3 ustawienie TCP_NODELAY debug2: kanał 1: żądanie pty-req potwierdź 1 ...
Podczas próby uruchomienia kate
:
debug1: client_input_channel_open: ctype x11 rchan 2 win 65536 max 16384 debug1: client_request_x11: żądanie od 127.0.0.1 55486 debug2: fd 8 ustawienie O_NONBLOCK debug3: fd 8 to O_NONBLOCK debug1: kanał 2: nowy [x11] debug1: potwierdź x11 debug2: połączenie X11 używa innego protokołu uwierzytelniania. Połączenie X11 odrzucone z powodu nieprawidłowego uwierzytelnienia. debug2: X11 odrzucił 2 i0 / o0 debug2: kanał 2: odczyt nie powiódł się debug2: channel 2: close_read debug2: kanał 2: wejście otwarte -> drenaż debug2: kanał 2: ibuf pusty debug2: kanał 2: wyślij eof debug2: kanał 2: drenaż wejściowy -> zamknięty debug2: kanał 2: zapis nie powiódł się debug2: channel 2: close_write debug2: kanał 2: wyjście otwarte -> zamknięte debug2: X11 zamknięty 2 i3 / o3 debug2: kanał 2: wyślij zamknij debug2: channel 2: rcvd close debug2: kanał 2: nie działa debug2: kanał 2: odśmiecanie debug1: channel 2: free: x11, nchannels 3 debug3: kanał 2: status: Otwarte są następujące połączenia: # 1 sesja klienta (t4 r0 i0 / 0 o0 / 0 fd 5/6 cc -1) # 2 x11 (T7 R2 i3 / 0 o3 / 0 fd 8/8 cc -1) # To samo co powyżej powtórz około 7 razy kate: nie można połączyć się z lokalnym hostem X serwera: 10.0
UPD2
Podaj numer dystrybucji i wersji systemu Linux.
Czy używasz domyślnego środowiska GNOME lub KDE dla X, czy czegoś, co sam dostosowałeś?
azat: ~ $ kded4 -version Qt: 4.7.4 Platforma programistyczna KDE: 4.6.5 (4.6.5) Demon KDE: $ Id $
Czy wywołujesz ssh bezpośrednio w wierszu poleceń z okna terminala?
Z jakiego terminala korzystasz? xterm, gnome-terminal lub?
Jak uruchomiłeś terminal działający w środowisku X? Z menu? Klawisz skrótu? czy?
Z emulatora terminala `yakuake` Ręcznie naciśnij `Ctrl + N` i napisz polecenia
Czy możesz uruchomić xeyes z tego samego okna terminala, w którym zawodzi ssh -X?
`xeyes` - nie jest zainstalowany Ale działa `kate` lub inna aplikacja kde
Czy wywołujesz polecenie ssh jako ten sam użytkownik, którego zalogowałeś do sesji X?
From the same user
UPD3
Pobieram również ssh
źródła i debug2()
pisząc, dlaczego to raport, że wersja jest inna.
Widzę niektóre pliki cookie, a jeden z nich jest pusty, inny toMIT-MAGIC-COOKIE-1
źródło
Za każdym razem, gdy masz problemy z ssh, pierwszą rzeczą, którą powinieneś zrobić, to uruchomić klienta z
-v
opcją dostarczenia danych wyjściowych do sprawdzenia przez innych:Zgaduję, że problem dotyczy twojego lokalnego systemu. Jak wywołujesz polecenie ssh? Czy uruchamiasz go ręcznie w powłoce? Czy może jest wykonywany jako część skryptu? W obu przypadkach należy upewnić się, że system lokalny ma
DISPLAY
poprawnie ustawione środowisko. Musi być również ustawiony poprawnie po stronie zdalnej, ale ta wartość będzie inna po stronie zdalnej niż po stronie lokalnej.Z tego, co napisałeś, wygląda na to, że jest on poprawnie ustawiony na zdalnym hoście (a przez rozszerzenie przekazywanie X11 jest poprawnie konfigurowane przez ssh). W systemie zdalnym masz:
Co to pokazuje po stronie lokalnej? To powinno być łatwe do sprawdzenia, czy jesteś w powłoce, zarówno przez echo wartości, jak i uruchamianie aplikacji X z tej powłoki ... zawsze możesz użyć czcigodnego
xeyes
do tego rodzaju testów, oczywiście! :)Z drugiej strony, jeśli wywołujesz polecenie ssh ze skryptu lub dołączasz do skrótu, może on nie odziedziczyć oczekiwanego
DISPLAY
środowiska , więc zmienna środowiskowa po stronie lokalnej może w ogóle nie zostać ustawiona.Ponadto, ponieważ brzmi to tak, jakbyś majstrował przy swoim
.Xauthority
pliku, możesz chcieć go całkowicie usunąć, a następnie wyloguj się z sesji X i zaloguj się ponownie, aby automatycznie go ponownie utworzyć. Rzadko zachodzi potrzeba zrzucania z tobą.Xauthority
, więc próba jest prawdopodobnie desperackim środkiem, który nie pomoże.To, co powinieneś zobaczyć po stronie lokalnej to:
W poprawnie skonfigurowanym systemie, jeśli otworzysz powłokę, nie musisz jej ustawiać ręcznie, powinna ona zostać odziedziczona ze środowiska, w którym uruchomiono powłokę. Jednak widziałem konfiguracje menedżera okien / skrótów klawiszowych, które nie obsługują poprawnie dziedziczenia zmiennych środowiskowych. Jeśli masz uruchomiony system Linux
gnome-session
lubkde-session
używasz go do uruchamiania swoich powłok lub skryptów, to zmienne środowiskowe sesji X powinny zostać ustawione poprawnie, jak opisano w dokumentacji Ubuntu na temat dziedziczenia zmiennych środowiskowych :AKTUALIZACJA
Dziękujemy za opublikowanie danych wyjściowych z
ssh -vvv
. W takim przypadku pomocna jest dodatkowa gadatliwość w-vvv
porównaniu do po prostu-v
. Wyjście debugowania mówi mi, że przekazywanie X11 jest poprawnie skonfigurowane:Ale
:0
w pierwszym wierszu wierzę, że po stronie lokalnej nadal występuje błąd konfiguracji w sposobie wywoływania ssh. W wielu systemach wartością domyślnąDISPLAY
jest:0.0
, a nie:0
. Czy w jakiś sposób sam ustawiasz wartośćDISPLAY
ręcznie przed wywołaniem polecenia ssh?W tym momencie przydatne byłyby dodatkowe informacje o systemie lokalnym i sposobie wywoływania polecenia ssh.
xeyes
z tego samego okna terminala, w którymssh -X
zawodzi?Ten ostatni element jest ważny. Jeśli korzystasz z ssh jako inny użytkownik (na przykład, jeśli otworzyłeś okno terminala głównego zamiast okna terminalu użytkownika), wtedy napotkasz ten problem, nawet jeśli wyraźnie ustawiasz,
DISPLAY=:0
ponieważ nie masz uprawnień do domyślnie połącz się z serwerem X jako inny użytkownik (nawet jako root!)źródło
t set
pokazuję DISPLAY` ręcznie. W rzeczywistości myślę, że rozumiem, dlaczego to nie działa, ponieważX -nolisten
na lokalnej maszynie-nolisten
nie ma nic wspólnego z tym problemem. Jeśli chodzi o X, to nic nie wie o twoim zdalnym połączeniu ssh. Dla X wygląda jak każdy inny program lokalny.sshd
można również uruchomić na pierwszym planie z dodatkową gadatliwością w przypadku, gdy problem leży po stronie serwera.Twoje konfiguracje wydają się być w porządku, ale spróbuj „ssh -X home”, jak zasugerował Agemen.
Ponadto, jeśli wszystko inne zawiedzie, spróbuj tego:
Po ssh do komputera domowego z pracy, na „home” wpisz:
Następnie w polu „praca” wpisz
Co spowoduje wyświetlenie monitu „xauth>”. Stąd wpisz „dodaj”, a następnie skopiuj wklej dane wyjściowe z „listy xauth”, po jednym wierszu na raz (każdy wiersz poprzedzony „dodaj”). Na przykład:
Daj nam znać.
źródło
ssh -X home
(napisz w poście). O Xauth spróbuję jutro.xauth list & xauth add
, ale nadal nie działaxauth add
azat/unix:10 MIT-MAGIC-COOKIE-1 ad01c582768c832ff591277b27863bc7
Nie rozumiem jasno, czy chcesz wyświetlać zdalne aplikacje na lokalnym wyświetlaczu (
work
), czy chcesz wyświetlać je na zdalnym systemie (home
).W pierwszym przypadku myślę, że
ssh -X host
powinno wystarczyć, bez potrzeby używania xhosta.W drugim przypadku system, w którym należy użyć xhost, jest
home
, a to nie wystarczy, należy również wyeksportować zmienną wyświetlaną.Nie jestem do końca pewien, co chcesz zrobić ... a ponieważ nie wiem, jakie są różnice między twoim systemem a moim, z jednej strony, a dokładną konfiguracją potrzebną dla ciebie z drugiej strony (jako Nie jestem specjalistą ^ _ ^). Mam nadzieję, że pomoże ci to w jakiś sposób, ponieważ te konfiguracje również dla mnie zadziałały.
źródło
ssh -X home
(napisz w poście). Tak, chcę wyświetlać zdalne aplikacje na moim lokalnym wyświetlaczu.