Dlaczego monit „hasło” trwa wiecznie, gdy SSH do mojego serwera Ubuntu 9.05?

27

Odpowiedź: W rzeczywistości wykonywał odwrotne rozpoznawanie DNS. W oparciu o poniższe sugestie i ten artykuł dodałem „UseDNS no” do mojego sshd_config, ponownie uruchomiłem ssh, a teraz monit o hasło wyświetla się natychmiast.

Kiedy przesyłam SSH do mojego serwera, pojawia się standardowy monit „login as:”, a następnie monit „hasło użytkownika @ hosta:”. Z jakiegokolwiek powodu wyświetlanie drugiego zawsze zajmuje trochę czasu. Mój serwer nie jest obciążony i zazwyczaj wykonuje polecenia dość szybko.

Teraz rozmawiamy tylko około 10 sekund między momentem naciśnięcia Enter dla nazwy użytkownika a wyświetleniem drugiego monitu, ale kiedy to robisz, robi się to denerwujące. Podejrzewam, że Ubuntu szuka mojego konta użytkownika, ale ma <5 kont na całej instalacji.

Aktualizacja @Josh / var / log / messages zawiera ten klejnot:

Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: Called
Oct 28 16:54:59 Athena sudo: pam_sm_authenticate: username = [msmith]
Oct 28 16:54:59 Athena sudo: Warning: Using default salt value (undefined in ~/.ecryptfsrc)
Oct 28 16:55:01 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: Passphrase key already in keyring; rc = [1]
Oct 28 16:55:02 Athena sudo: There is already a key in the user session keyring for the given passphrase.

Gdzie msmith to moja nazwa użytkownika. Co to wszystko znaczy?

rcampbell
źródło
Czy wiesz (lub chcesz się nauczyć), jak korzystać z snifferów pakietów, takich jak Wireshark lub tcpdump? Dzięki temu dowiesz się, czy serwer sam zużywa cały ten czas, czy faktycznie komunikuje się z klientem.
Arjan

Odpowiedzi:

17

Czy to możliwe, że wykonuje odwrotne wyszukiwanie DNS na twoim IP? Możesz sprawdzić wyniki online, jeśli klient używa publicznego adresu IP, lub użyć czegoś takiego jak na swoim serwerze:

dig -x CLIENT_IP_ADDRESS

Czy jest coś w /var/log/messages?

Josh
źródło
Mam w dzienniku Ostrzeżenie: Ostrzeżenie: Używanie domyślnej wartości soli (niezdefiniowane w ~ / .ecryptfsrc). Wysłałem całą sekcję do pytania do twojej analizy.
rcampbell
@ rrc7cz, a co z tym zwrotnym DNS? Czy twój adres IP rozwiązuje problem? (Wątpię, żeby to pomogło, ponieważ najczęściej potrzeba kilku uścisków dłoni, aby zdecydować, czy należy wyświetlić monit o nazwę użytkownika. Szybki test przy użyciu Wireshark na moim komputerze Mac pokazuje, że SSH jest inicjowany na długo przed prośbą o nazwę użytkownika. Ale może niektórzy klienci pytają o tę nazwę użytkownika, zanim nawet spróbują się połączyć ...?)
Arjan,
3
Miałem ten problem z odwrotnym wyszukiwaniem DNS spowalniający moje połączenia ssh w kilku instalacjach ... Jeśli znajdziesz taki przypadek, skomentuj wiersz „UseDNS tak” w / etc / ssh / sshd_config i zrestartuj sshd.
John Barrett,
@ john, czy pamiętasz, czy to zwolniło po wpisaniu nazwy użytkownika?
Arjan
1
„UseDNS nie” też mi pomogło! UpVotes zarówno dla pytań i odpowiedzi!
Grizly,
14

Prawdopodobnie odwrotne rozpoznawanie DNS (serwer próbuje uzyskać nazwę klienta na podstawie adresu IP) zajmuje dużo czasu. Czy możesz sprawdzić, czy / etc / ssh / sshd_config ma ustawienie „VerifyReverseMapping yes”? Ustaw go na „VerifyReverseMapping no” i sprawdź, czy pomaga.

Edycja: Wygląda na to, że VerifyReverseMapping jest już przestarzałe, a useDNS to nowa konfiguracja w sshd_config .

secureBadshah
źródło
To może być prawda, ale czy to ma sens, że od razu pojawia się monit o nazwę użytkownika, po upływie którego prośba o podanie hasła zajmuje 10 sekund?
Arjan
Klient jest w stanie rozpoznać nazwę serwera i wysłać zapytanie, dlatego monit użytkownika jest natychmiast wyświetlany. Ale potem serwer próbuje uzyskać nazwę klienta (odwrotne rozpoznawanie DNS). Może to przekroczyć limit czasu, jeśli dawka początkowa nie istnieje. Ustawienie „VerifyReverseMapping” w sshd-config kontroluje tę kontrolę.
secureBadshah
1
To był powód spowolnienia w moim przypadku, więc w niektórych przypadkach ma to sens. Pamiętaj, że domyślnie jest yes, więc nie szukaj, jeśli useDNSjest ustawiona :)
Nanne,
3

Zawsze możesz zalogować się przy użyciu nazwy użytkownika, zaczynając od:

ssh user@server

czy to ma jakiś wpływ?

Jeśli używasz PuTTY, można go skonfigurować w obszarze Połączenie -> Dane jako nazwa użytkownika z automatycznym logowaniem.

John T.
źródło
1
Chociaż oczywiście nie przyspiesza to czasu pojawienia się pytania o hasło, zdecydowanie przyspiesza cały proces logowania. Dzięki
rcampbell
3

Jeśli nie masz odpowiednich nazw domen dla wszystkiego, po prostu wymyśl coś i włóż /etc/hosts. Sprawdź, czy pójdzie to szybciej ... nie zawracaj sobie głowy .compo prostu użyj „bob, kolęda, ted, alicja” lub cokolwiek chcesz ...

Jeśli problemem są przekroczenia limitów czasu rozwiązania, to to rozwiąże.

DigitalRoss
źródło
1

Pamiętaj, że klient wykona również sprawdzanie zwrotnego DNS, co może potrwać 30 sekund lub dłużej, jeśli odwrotne odwzorowanie DNS nie istnieje w przypadku niektórych konfiguracji rozdzielczości.

W jednym /etc/ssh/ssh_configlub w ~/.ssh/configzestawie, CheckHostIP noaby wyłączyć to wyszukiwanie po stronie klienta.

Zobacz man 5 ssh_configdalsze szczegóły.

tylerl
źródło
1

Znalazłem alternatywne rozwiązanie tego problemu: - http://www.patrickmin.com/linux/tip.php?name=ssh_pause

Miałem ten sam problem z zalogowaniem się do komputera z systemem Linux przy użyciu Putty pod Windows. Dodanie adresu IP mojego okna systemu Windows do / etc / hosts na komputerze z systemem Linux rozwiązało problem.

Rob Belcham
źródło
3
Witamy w Super User - generalnie wolimy, abyś zawierał szczegóły, a nie tylko linki. Czy możesz EDYTOWAĆ swoją odpowiedź, aby dodać więcej informacji z linku?
Simon Sheehan,
1

Dla przypomnienia, doświadczyłem tego samego problemu, w którym ssh byłby szybki z domu na mój serwer domowy (głównie używając go do git), ale zajęło by to około 10-20 sekund w pracy, aby otrzymać monit o hasło.

Musiałem się wyłączyć UseDNS noi uruchomić ponownie sshd sudo systemctl restart sshd.service. Następnie działa ze wszystkich lokalizacji.

Wiem, że pytanie zostało udzielone i zaakceptowane, ale chciałem dodać tę informację, ponieważ musiałem „aktywnie” ustawić ją na „ nie” , aby przestała używać dns.

qrikko
źródło
0

Sprawdź, czy działa nslcd (demon LDAP):

ps -ef | grep nslcd

Może to powodować ten problem.

Jeśli jest uruchomiony, zatrzymaj go i usuń z listy usług

service nslcd stop
chkconfig nslcd off
Anu V Das
źródło