Co oznacza „Ostrzeżenie: niezaufana konfiguracja przekazywania X11 nie powiodła się: nie wygenerowano danych klucza xauth”, gdy ssh'ing z -X?


134

Kiedy używam ssh -Xna komputerze Mac (z systemem OS X 10.6.7), aby połączyć się z moim systemem Ubuntu (11.04), pojawia się następujące ostrzeżenie:

Ostrzeżenie: niezaufana konfiguracja przekazywania X11 nie powiodła się: dane klucza xauth nie zostały wygenerowane Ostrzeżenie: Brak danych xauth; przy użyciu fałszywych danych uwierzytelniających do przekazywania X11.

Czy mogę coś zrobić, aby ostrzeżenie zniknęło? Jeśli nie, czy mogę to bezpiecznie zignorować?

Przekazywanie X11 wydaje się działać dobrze, chociaż widzę ten komunikat:

Xlib: brak rozszerzenia „RANDR” na ekranie „localhost: 10.0”.

Czy ma to związek z ostrzeżeniem? (Chyba nie. Jeśli nie, zadam nowe pytanie na ten temat.)


1
Czy program xauth jest zainstalowany na serwerze Ubuntu?
slubman

sudo apt-get install xauthmówi mi, że „xauth jest już najnowszą wersją”
Daryl Spitzer

Po zalogowaniu się na serwerze ubuntu, jakie jest wyjście „jakie xauth”?
slubman

Rzeczywiście uważam, że powinieneś przeczytać to wyjaśnienie: mail-archive.com/cygwin-xfree@cygwin.com/msg17927.html… możesz zignorować to ostrzeżenie
slubman

2
czasami może to być spowodowane problemami z plikiem ~ / .Xauthority. Jeśli go usuniesz, zostanie utworzony ponownie przy następnej próbie logowania.
Michael

Odpowiedzi:


145

Czy jest jakiś powód, dla którego nie chcesz używać flagi -Y zamiast flagi -X?

Po prostu, różnica między -X i -Y polega na tym, że -Y umożliwia zaufane przekazywanie X11.


4
Nie, po prostu nie wiedziałem o flagi -Y, kiedy pisałem pytanie. Uważam, że okazało się to rozwiązaniem. Zmień swoją odpowiedź, aby nie było to pytanie (i byłoby miło, gdybyś krótko wyjaśnił różnicę między -Y i -C), a ja to zaakceptuję.
Daryl Spitzer

czy jest jakikolwiek przypadek, w którym nie chcesz używać -Y zamiast -X?
Kogut

@Rooster dla bardzo starych systemów, w których -Y nie jest obsługiwane Powiedziałbym
Petr

Porada dotycząca rozwiązywania problemów: uruchom polecenie „ssh -vv ...” i poszukaj wiersza xauth i wszelkich komunikatów o błędach. Możesz spróbować uruchomić linię xauth, którą pokazuje bezpośrednio. Dla mnie potrzebowałem czegoś takiego jak „xauth list: 0” (zaufany), a nie „xauth -f / tmp / ssh ... list: 0” (niezaufany). Które -Y naprawiono, a „ForwardX11Trusted yes” na zdalnym hoście / etc / ssh / ssh_config (lub ~ / .ssh / config) również naprawione.
Curtis Yallop

To rozwiązanie działało również z Cygwin / X.
linux64kb

25

Jeśli przyjedziesz tutaj w 2015 r .: nawet jeśli wszystko inne jest poprawnie skonfigurowane, może się to zdarzyć również w systemie Mac OS X 10.10 Yosemite, gdy używasz ssh -Xi uruchamiasz wersję XQuartz <= 2.7.7. Główną przyczyną jest to, że gniazda ekranowe X11 są zapisywane poza ścieżką wyszukiwania xauth: problem nr 2068 w module śledzącym XQuartz.

Edycja: Naprawiono XQuartz został wydany na nowej stronie głównej, xquartz.org , a instalacja najnowszej wersji stamtąd (obecnie 2.7.9) obejmie ten problem.


1
Dziękuję Ci! Nie miałem pojęcia, że XQuartz, który właśnie pobrałem z góry strony XQuartz, nie jest tak naprawdę najnowszą wersją.
craigds

Warto zauważyć, że brew install xquartzobecnie instaluje nieaktualną wersję 2.7.7.
Martin Cleaver,

brew install Caskroom/cask/xquartzpowinienem zdobyć najnowszy XQuartz z HomeBrew
Nick

Lub krócej brew cask install xquartz.
Franklin Yu,

17

Jeśli otrzymasz ten sam komunikat, nawet podczas korzystania -Y, xauthmoże brakować programu na serwerze. W systemach podobnych do Debiana potrzebujesz xauthpakietu. W systemach podobnych do RedHat potrzebujesz xorg-x11-xauthpakietu.


15

„Niezaufany” w tym kontekście oznacza, że ​​nie ufasz połączeniu. SSH zastosuje dodatkowe środki bezpieczeństwa, aby uczynić przekazywanie X11 bezpieczniejszym. „Zaufany” oznacza, że ​​masz całkowitą pewność, że nikt na zdalnym hoście nie uzyska dostępu do twoich danych Xauth i użyje ich na przykład do monitorowania naciśnięć klawiszy.

Ta terminologia dezorientowała mnie przez lata. Myślałem, że „zaufane” połączenia są bezpieczniejsze. Ale w rzeczywistości jest to opcja, której należy użyć w sytuacjach, gdy połączenie JEST godne zaufania i chcesz uruchomić rzeczy bez dodatkowych zabezpieczeń. „Niezaufany” to taki, który sprawia, że ​​(nieco) bezpieczniej jest radzić sobie z niezaufanym zdalnym hostem.

Połączenie „Niezaufane” próbuje ograniczyć możliwości czarnego kapelusza, włączając rozszerzenie bezpieczeństwa X11 i wyłączając inne rozszerzenia, których (mam nadzieję) nie potrzebujesz. Prawdopodobnie dlatego RandR jest wyłączony przez -X. Czy musisz mieć możliwość obracania wyświetlacza X ze zdalnego hosta?

Należy również zauważyć, że „niezaufane” przekazywanie X11 wyłącza się po pewnym czasie, aby zapobiec przypadkowemu pozostawieniu go włączonym. Nowe próby otwierania okien po prostu się nie powiodą. To mnie ugryzło kilka razy, zanim przeczytałem wystarczającą liczbę dokumentów, aby zrozumieć, co się dzieje.


9

Nie mam konfiguracji, która może wykazywać takie zachowanie, więc jest to strzał w ciemność:

Ostrzeżenie może być zmniejszane, jeżeli ustawisz ForwardX11Trusteddo "no"hostów, które dają to ostrzeżenie. Możesz umieścić to w jednym ~/.ssh/configlub /etc/ssh/ssh_config, i możesz uczynić tę opcję specyficzną dla konkretnego hosta, Host <hostname>umieszczając w powyższej linii. <hostname>komponent pasuje, co należy wpisać w wierszu poleceń (nie rozwiązany hostname) i może zawierać symbole wieloznaczne.


Można użyć ssh -Ydo wykonania zaufanego przekazywania X11, ale jak naprawić niezaufane?
Pavel Šimerda

Ten sam błąd wystąpił w Redhat i teraz mogę go rozwiązać, edytując plik konfiguracyjny /etc/ssh/ssh_configpo stronie klienta. Dziękuję
Gangadhar Jannu,

7

UWAŻAJ (zmęczony czytaniem niepełnych odpowiedzi, które prowadzą do usterki bezpieczeństwa)

1 / użycie ssh -Y oznacza tutaj posiadanie fałszywych informacji xauth, co jest złe!

2 / ssh -X powinien działać, ponieważ XQuartz, po włączeniu, używa xauth. Jedynym problemem jest to, że ssh szuka xauth w / usr / X11R6 / bin, a na komputerach Mac z XQuartz jest w / opt / X11 / bin

Bezpieczne rozwiązywanie:

1 / Włącz pierwszą opcję w zakładce Security w preferencjach (Cmd-,), która włącza uwierzytelnione połączenia

2 / dodaj

XAuthLocation /opt/X11/bin/xauth

w $ HOME / .ssh / config

3 / ssh -X you_serverdziała w bezpieczny sposób


6

Jeśli instalacja xauthnie działa poprawnie, jedną szczególnie irytującą sprawą może być uszkodzony .Xauthorityplik. Ten szczególny przypadek pozwolił niektórym klientom X działać, ale nie innym z większą tendencją do niepowodzenia z nowszymi wyświetlaczami. Usunięcie i ponowne utworzenie .Xauthoritypliku może rozwiązać ten problem.


6

Wyklucz problemy po stronie serwera

Po pierwsze, należy wykluczyć wszelkie problemy po stronie serwera. Czy jesteś w stanie ssh -Xpomyślnie z innego hosta? Czy ssh -Ydziała, podczas gdy ssh -Xnie? W obu przypadkach załóż, że ssh + X11 jest poprawnie skonfigurowany na serwerze i przejdź do następnej sekcji.

Jeśli nie jesteś w stanie tego sprawdzić (powiedzmy, że masz tylko jednego laptopa z X11), możesz sshz serwera na siebie za pomocą fałszywej sesji:

  1. export DISPLAY=:44# (Powłoka Bourne'a) lub
    setenv DISPLAY :44# (csh / tcsh)
  2. xauth add $DISPLAY MIT-MAGIC-COOKIE-1 1234 # Fałszywe ciasteczko tylko na potrzeby tego testu
  3. ssh -X localhost env |grep DISPLAY

Oczekiwany wynik: na zdalnym końcu sesji ssh-to-self powinna znajdować się zmienna DISPLAY. Jeśli nie otrzymasz żadnego wyniku, serwer prawdopodobnie jest źle skonfigurowany (np. xauthMoże brakować bibliotek X11 i / lub polecenia; konfiguracja sshd może być ustawiona tak, aby odmawiać dostępu do X11)

Na Macu: sprawdź, czy Xquartz jest aktualny

Zgodnie z odpowiedzią Willa Angleya

Sprawdź ssh -vv -Xdane wyjściowe

Cytowany komunikat o błędzie jest objawem, który może mieć wiele przyczyn. Spróbuj ponownie , co powinno dać ci dodatkowe wskazówki, dlaczego konfiguracja tunelu X11 nie powiodła się.ssh -X -vv remotehost

Czy widzisz następujący komunikat?

debug1: Brak programu xauth.
W takim razie,

  1. Zwróć uwagę na to, gdzie w systemie klienta xauthznajduje się polecenie:
    który xauth
  2. Dodaj następujące na samym końcu ~ / .ssh / config (i dodaj komentarz, aby przypomnieć sobie, aby zachować go w przyszłości):
    Gospodarz *
        XAuthLocation / opt / X11 / bin / xauth
    
    Dostosuj tę ścieżkę zgodnie z ustaleniami z kroku 1 - Kredyty dla Jana-Willema Arnolda

3

Jak już wyjaśniono powyżej, dla mnie działały:

Edytuj ~ / .ssh / config, aby dodać linie

Host *
    XAuthLocation /opt/X11/bin/xauth

a teraz działa nazwa hosta ssh -X (XQuartz 2.7.11, macOS 10.4 Mojave)


0

Miałem już zainstalowany najnowszy XQuartz 2.7.11, ale myślę, że od tego czasu kilkakrotnie aktualizowałem system operacyjny. Ponownie zainstalowałem XQuartz 2.7.11, a teraz działa dobrze.


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.