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”.

wkdmarty
źródło
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 [email protected]

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

Walter Caraza
źródło
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).

użytkownik1686
źródło
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.

wkdmarty
źródło
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.

Ken Jackson
źródło
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.
0

rm ~/.Xauth* a następnie podłącz ponownie.

To działa dla mnie. Po więcej szczegółów

zzz92
źródło