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?


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?


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 .


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.


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.


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.


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.


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.


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