Co może oznaczać „Roaming niedozwolony przez serwer” klienta ssh?

25

Nie mogę się połączyć z instancją serwera SSH, a pełne dane wyjściowe zawierają debug1: Roaming not allowed by server. Pojawiają się następujące problemy do przewidzenia i możliwe do uniknięcia:

  • Roaming oznacza dostęp do usług z różnych typów sieci. Nie mogę zrozumieć, co to może oznaczać w kontekście pełnego wyjścia sshklienta 6.6.1 działającego na Ubuntu 14.04.
  • Nie jest jasne, czy jest to błąd, czy nie, i czy powoduje to niepowodzenie logowania, czy nie (nie chcę tu jednak zagłębiać się w błąd połączenia; żaden komunikat wyjściowy sshnie zawiera BTW -> więcej problemów i czas rezygnacji - zostałeś ostrzeżony!)
  • Pytałem site:www.openssh.org roamingw google z pustym wynikiem, a strony nie zawierają tego terminu. Używanie go bez sensu, nawet jeśli zostało udokumentowane z powodu niejednoznaczności!

Co może oznaczać wiadomość? Jak mogę go użyć do debugowania dużego zestawu innych bardzo dwuznacznych, nieintuicyjnych i niepomocnych błędów i innych komunikatów SSH?

Karl Richter
źródło

Odpowiedzi:

22

To nie jest tak naprawdę komunikat o błędzie. To tylko komunikat debugujący informujący, że serwer nie akceptuje połączeń w roamingu.

Roaming jest najwyraźniej eksperymentalną funkcją dodaną do OpenSSH w 2009 roku. Celem tej funkcji jest umożliwienie klientowi ssh rozłączenia się z sesją serwera, a następnie wznowienie sesji z innej lokalizacji. Zobacz tutaj trochę dyskusji na ten temat. Googling ssh, roaming i „Martin Forssén” pojawią się na innych stronach. Nie wygląda na to, żeby był aktywnie rozwijany. Podejrzewam, że programiści SSH nigdy tego nie udokumentowali, ponieważ jest eksperymentalna i być może jeszcze nie skończona.

Po sprawdzeniu kodu źródłowego OpenSSH istnieje nieudokumentowana opcja po stronie klienta, UseRoamingktórą można ustawić na tak lub nie. Dodanie wiersza „UseRoaming no” do konfiguracji klienta (zwykle do .ssh/configpliku) powinno powstrzymać komunikat debugowania.

Nie było dla mnie oczywiste, dlaczego HostbasedAuthenticationustawienie po stronie serwera kontroluje, czy serwer akceptuje połączenia w roamingu, czy nie.

Aktualizacja: Obsługa klienta mobilnego jest najwyraźniej przedmiotem raportu narażenia na atak komputera, CVE-2016-0777 . Wersje OpenSSH od 5.4 do 7.1p1 są podatne na ataki. Użytkownicy powinni dokonać aktualizacji do wersji OpenSSH 7.1p2 lub nowszej. Użytkownicy, którzy nie mogą dokonać aktualizacji, powinni wyłączyć roaming w kliencie, dodając „UseRoaming no” do konfiguracji klienta ssh. Zobacz:

Kenster
źródło
7
Cóż, teraz zaleca się ustawienie go na no. mail-archive.com/[email protected]/msg144351.html
nikeee
1
@nikeee: ... i to jest przestroga dla nie wysyłania „nieszkodliwych” niedziałających kodów pośredniczących. (Pamiętaj, że musisz to ustawić now ustawieniach klienta , a nie na serwerze)
Piskvor,
@Piskvor, ale istnieje wiele książek na temat devops / webops, które rozpowszechniają się w ten sposób ... czy wszyscy mogą się mylić? O.
Florian Heigl
najlepsze wyjaśnienie tej konfiguracji w sieci.
nils petersohn
4

Dziennik zmian z openssh 5.3 na CentOS6 ma notatkę:

2009/06/27
     Dodaj opcję klienta UseRoaming. Jeszcze nic nie robi, ale zrobi
     kontrolować, czy klient próbuje korzystać z roamingu, jeśli jest włączony w
     serwer. Od Martina Forssena.
Andrew Daviel
źródło
3

@ ILMostro_7 chmod 600 uprawnione klucze działały dla mnie dobrze.

Z korzyścią dla każdego, kto tu przybywa, przeglądając „Roaming niedozwolony przez serwer” i korzysta z klienta Linux (Ubuntu), możesz naprawić to ostrzeżenie, a następnie zobaczyć:

Agent admitted failure to sign using the key

Lekarstwo na to podano na https://help.github.com/articles/error-agent-admitted-failure-to-sign/

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    # Agent pid 59566 (displays process id)
    $ ssh-add
    # Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap]
    # Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

„#” = komentarz. ty = twoja nazwa użytkownika. [tippy tap] = humo [u] r? = naciśnij klawisz Enter.

Mam nadzieję, że to pomaga komuś tak bardzo, jak te pytania i odpowiedzi już mi pomogły.

MartinRH
źródło
2

Ten komunikat o błędzie może zostać wyświetlony, gdy /etc/ssh/sshd_confignie jest HostbasedAuthenticationustawiony yesna serwerze.

Nie mam pojęcia dlaczego.

Innym problemem może być:

Sprawdź uprawnienia do katalogu $ USER / .ssh, który powinien być własnością użytkownika i powinien być chmod 700. Plik uprawniony do kluczy powinien być również chmod 700 i własnością użytkownika

Nifle
źródło
700? Dlaczego miałbyś potrzebować executetrochę pliku klucza?
ILMostro_7,
Skąd cytat? Dodaj referencję.
Karl Richter
ILMostro_7 nie ma w pliku, jest w katalogu, a aby użytkownik mógł tworzyć pliki w katalogu, należy ustawić flagę wykonania
IceyEC
@IceyEC Odpowiedź sugeruje 700 dla kluczy autoryzowanych .
mdrozdziel
1
Powinno być chmod 400. Nie mam pojęcia, dlaczego kiedykolwiek chciałbym , aby ten plik był wykonywalny; a dostęp do zapisu jest również niepożądany w 99,999% przypadków. sshdsprawdza, czy .sshfolder użytkownika nie ma dostępu do grupy i innych, i podobnie .ssh/authorized_keys. Dlatego perms w odpowiedzi może działać, ale są niepotrzebnie szerokie.
Piskvor,