Jak debugować „Połączenie X11 odrzucone z powodu nieprawidłowego uwierzytelnienia”


10

Mam problem z przekazywaniem X przez SSH. Walczyłem od wieków, ale nikt nie może pomóc.

Teraz wybieram inny takt. Chciałbym wiedzieć, jak debugować błędy?

Jakie dzienniki powinienem sprawdzić, jakie dodatkowe flagi powinienem ustawić (-v itp.) I czego powinienem szukać?

Dalsza edycja:

Jeśli zaloguję się do Putty na serwerze i spróbuję xeyes, otrzymam:

Proxy PuTTY X11: próba niewłaściwego protokołu autoryzacji Błąd: Nie można otworzyć display: localhost: 10.0

Jeśli xauth generate $DISPLAYdostanę:

Proxy PuTTY X11: próba nieprawidłowego protokołu autoryzacji xauth: (argv): 1: nie można otworzyć wyświetlacza „localhost: 10.0”.


W swoim pytaniu z innego dnia opisujesz różne objawy. Nadal cierpisz z powodu „Can't open display” lub rozwiązałeś to? Jeśli rozwiązałeś ten problem, a jedna z odpowiedzi na to pytanie była pomocna, wybierz ją jako odpowiedź, aby nagrodzić osobę, która Ci pomogła.
— Kenster

Zgadzam się, teraz jest inny błąd, zamknąłem to pytanie.
— wkdmarty

Sprawdź, czy ta odpowiedź dotyczy Twojego serwera.
— Kenster,

Kenster, nie miałem żadnego pliku rc na serwerze, więc utworzyłem jeden i wkleiłem kod. Bez różnicy.
— wkdmarty

W dziennikach PuTTY pojawia się to po próbie uruchomienia programu x (po zalogowaniu SSH). 2014-09-01 15:16:38 Otrzymano żądanie połączenia X11 z 127.0.0.1:59566 2014-09-01 15:16:38 Otwarcie połączenia przesyłania dalej X11 powiodło się 2014-09-01 15:16:38 Nic nie zostało do wysłania, kanał zamykający 2014-09-01 15:16:38 Zakończono przekazywanie połączenia X11
— wkdmarty

Odpowiedzi:


13

Moje rozwiązanie krok po kroku:

1) zaloguj się z opcją -X zdalny katalog główny hosta zdalnego

$ ssh -X root@192.168.1.39

2) sprawdź, czy istnieje plik .Xauthority

[root @ localhost ~] # ls -al
[root @ localhost ~] # vim .Xauthority

3) skopiuj plik .Xauthority do katalogu drugiego użytkownika

[root @ localhost ~] # cp .Xauthority / home / oracle /
cp: nadpisać `/home/oracle/.Xauthority '? y

4) ustaw uprawnienia dla tego pliku

[root @ localhost ~] # chown oracle: oinstall .Xauthority
[root @ localhost ~] # chmod 0600 .Xauthority

5) zaloguj się użytkownik oracle

[root @ localhost ~] # su - oracle

6) ustawienie wyświetlania w localhost: 10.0

[oracle @ localhost ~] $ echo $ DISPLAY
localhost: 10.0
[oracle @ localhost ~] $ ls -al

7) zawiera listę istniejących plików cookie xauth

[oracle @ localhost ~] $ xauth list
localhost.localdomain / unix: 11 MIT-MAGIC-COOKIE-1 310f1b02c1080e73059391c193a1881b
localhost.localdomain / unix: 10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb759

8) dodawanie

[oracle @ localhost ~] $ xauth dodaj localhost.localdomain / unix: 10 MIT-MAGIC-COOKIE-1 41843db100830a2aa352641ac47bb75

9) test

[oracle @ localhost ~] $ xclock

Mam nadzieję, że służą! @wcaraza


2
Część dodana przez xauth .... to podstęp
— Wei

kroki 3. i 4. zrobiły dla mnie lewę
— kiltek

6

Upewnij się, że serwer SSH ma xauthzainstalowane narzędzie i że Twój ~/.Xauthorityplik jest zapisywalny. (Nieistniejące jest również w porządku, o ile xauthmożna je utworzyć).

Sprawdź, czy dane xauth są aktualizowane:

server$ xauth list

Spróbuj ręcznie dodać fikcyjne dane xauth (ponownie na serwerze SSH) i sprawdź, czy występują xauthjakieś problemy (np. Niemożność utworzenia pliku blokady lub modyfikacji samego pliku Xauthority):

server$ xauth add localhost:123 MIT-MAGIC-COOKIE-1 d7e2e4a8c5aa4430bfcc2abb436940d2

W razie potrzeby uruchom ponownie pod strace.

Uruchom usługę SSH w trybie debugowania, ustawiając LogLevel DEBUG2konfigurację serwera ( /etc/ssh/sshd_config) lub uruchamiając bezpośrednio sshd w trybie debugowania:

server$ sshd -rddp 12234

(W tym przykładzie 12234jest to tymczasowy port SSH, z którym należy się połączyć. Zrobi to dowolny wolny port).


Dziękuję Ci. Xauth na serwerze może zapisywać do pliku .Xauthority. Ale co powinno być ustawienie? serwer = N40L, klient = Lin001. Czy lista xauth na N40L powinna zawierać wpis dla localhost: 10 MIT-MAGIC-COOKIE-1 {Lin001'sHexKey}?
— wkdmarty

@wkdmarty: Tak, twój sshd będzie nasłuchiwał na porcie TCP odpowiadającym display: 10 (lub: 11,: 12 ...), a to pokaże się jako „localhost: 10”. Jeśli chodzi o klucz szesnastkowy, to tak naprawdę nie wiem, czy ma on używać tego samego klucza - myślę, że ssh faktycznie generuje nowy i działa jako proxy ...
— user1686

ok idealnie, widzę, że 0.0.0.0:6011 nasłuchuje. Moja zmienna DISPLAY ma stan N40L: 11.0, co moim zdaniem jest błędne, więc zmienię to na DISPLAY = localhost: 10.0. Nie, nadal błąd. Zauważyłem w połączeniu SSH następującą linię: debug2: x11_get_proto / usr / bin / xauth list: 0.0 2> / dev / null gdziekolwiek widziałem rejestrowanie połączenia SSH, ta linia jest inna ... pokazuje generowanie klucza, nigdy : 0,0.?
— wkdmarty

@wkdmarty: Zwykle sshd powinien ustawić $ DISPLAY na prawidłową wartość ... a port 6011 i tak odpowiada wyświetlaniu 11, a nie 10.
— user1686

1
„Moja zmienna DISPLAY ma stan N40L: 11,0 ... więc zmienię to”. Mówiąc wprost, zostaw DISPLAY w spokoju. Jeśli ssh skonfiguruje przekazywanie X11, ustawi DISPLAY na wartość, która będzie działać. Przesłonięcie wartości ustawionej przez ssh tylko utrudni proces rozwiązywania problemów.
— Kenster

3

Działa, działa. ha ha.

WRESZCIE.

Po odkryciu, że to nie był system, dodając użytkownika testowego (którego przekierowanie x działało „po wyjęciu z pudełka”), pomyślałem, że zacznę kopiować pliki startowe .bash *, aby virginise „zepsutego” użytkownika.

Żaden z plików nie był inny, więc następnie usunąłem katalog .ssh użytkowników. Kiedy się zalogowałem, narzekałem: „Serwer odmówił naszego klucza”, ale mogłem się zalogować przy użyciu hasła. Po zalogowaniu mogłem x przesyłać dalej idealnie.

Spróbuję teraz ponownie skonfigurować klucz i sprawdzić, czy uda mi się go uruchomić. Potem wróci do normy.


To też działało dla mnie. Próbowałem wszystkich innych metod, ale tak, najwyraźniej problem tkwił w kluczach.
— Pomocniczy

1

Jeszcze jedna rzecz, która może powodować ten problem, to istnienie ~/.ssh/rcpliku na serwerze - komputerze, z którym się łączysz. Usuń go (lub zmień nazwę), aby rozwiązać problem.


1
Na man sshdsshd działa ~/.ssh/rczamiast xauth@PimpJuiceIT.
— Ken Jackson

Dziękuję Ci! Aby uzyskać więcej informacji, zobacz: docstore.mik.ua/orelly/networking_2ndEd/ssh/… . Powinno być możliwe dodanie odpowiednich poleceń, aby uruchomić xauth w pliku rc, ale go nie znalazłem.
— Matt B.

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.