Odpowiedzi:
Istnieje kilka rzeczy, które mogą pójść nie tak. Dodaj, -vvv
aby ssh wydrukował szczegółowy ślad tego, co robi, i zobacz, gdzie się zatrzymuje.
Problem może dotyczyć klienta lub serwera.
Częstym problemem na serwerze jest połączenie z klientem, dla którego upłynął limit czasu wyszukiwania wstecznego DNS. („Odwrotne wyszukiwanie DNS” oznacza powrót z adresu IP komputera klienta na nazwę hosta. Nie jest to tak naprawdę przydatne dla bezpieczeństwa, tylko nieznacznie pomaga zdiagnozować próby włamania do wpisów w dzienniku, ale i tak robi to domyślna konfiguracja). Aby wyłączyć wyszukiwanie zwrotne DNS, dodaj UseDNS no
do /etc/ssh/sshd_config
(musisz być rootem na serwerze; pamiętaj, aby później ponownie uruchomić usługę SSH).
Kolejną rzeczą, która może pójść nie tak, jest przekroczenie limitu czasu uwierzytelniania GSSAPI . Jeśli nie wiesz, co to jest, prawdopodobnie nie polegasz na tym; możesz to wyłączyć, dodając wiersz GSSAPIAuthentication no
do /etc/ssh/ssh_config
lub ~/.ssh/config
(to po stronie klienta).
UseDNS no
naprawił go jak urok. Jestem w sieci wewnętrznej bez serwera DNS do obsługi wyszukiwania wstecznego dla wewnętrznych adresów IP.
GSSAPIAuthentication
? (googlowanie przez 15 minut nie rzuciło na to światła)
Odczekaj czas logowania i sprawdź, jak długo to zajmie:
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m45.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Patrz wyżej, zalogowanie zajęło około 45 sekund -------- BARDZO WOLNY
Po zalogowaniu się jako root edytuj plik sshd_config i zmień wpis UseDNS jak poniżej. Tutaj używam sed zamiast edycji pliku.
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
#UseDNS yes
[root@ISSLABNTL01 ~]# sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
[root@ISSLABNTL01 ~]# grep -i dns /etc/ssh/sshd_config
UseDNS no
[root@ISSLABNTL01 ~]# service sshd restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
[root@ISSLABNTL01 ~]# exit
Daj nam czas na proces logowania i zobacz, jak długo to potrwa.
[root@gislab00207 ~]# time ssh root@ISSLABNTL01
root@isslabntl01's password:
Last login: Fri Oct 4 07:55:03 2013 from 3.60.40.232
[root@ISSLABNTL01 ~]# exit
logout
Connection to ISSLABNTL01 closed.
real 0m6.192s
user 0m0.003s
sys 0m0.005s
You have new mail in /var/spool/mail/root
[root@gislab00207 ~]#
Zobacz, że zajęło mi to teraz 6 sekund, czas na wpisanie hasła.
UseDNS no
Rozwiązany
Jest to coś, co źle wychodzi z instalacji Ubuntu.
Aby to naprawić, musisz zmienić ten wiersz w pliku /etc/nsswitch.conf :
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
I zmień to na ten:
hosts: files dns
nsswitch.conf
ten sposób prosi o kłopoty i nie zapewnia ogólnego rozwiązania spowolnienia SSH.
W moim przypadku problem można rozwiązać, uruchamiając ponownie systemd-logind
:
systemctl restart systemd-logind
Jest to wspomniane w Serverfault .
Muszę to robić jednak regularnie i nie wiem, jaka jest pierwotna przyczyna problemu.
Wyjście debugowania dla ssh w moim przypadku po prostu zatrzymało się na 30 sekund, podczas gdy „łączyło się”. Rozwiązanie okazało się powiązane z ustawieniami DNS w moim systemie lokalnym. Poprzednia konfiguracja sieci pozostawiła fałszywy serwer DNS w /etc/resolv.conf
pliku. Zastąpienie go bieżącym serwerem DNS rozwiązało problem.
Dla mnie zmieniłem system dns na 127.0.0.1, wcześniej był to nieistniejący host.
nano /etc/resolv.conf
I napisz następujące
domain localdomain
search localdomain
(Removed this line) ===> nameserver 10.0.0.1
(Added this line) ===> nameserver 127.0.0.1
Nie wiem tyle o środowisku plakatu, jak chciałbym, ale dla innych z podobnym problemem może to być problem, z sssd
którym korzystamy, aby powiązać ldap mojo.
Zdarza mi się to:
$ time ssh server.example.com
real 2m0.018s
user 0m0.006s
sys 0m0.004s
Muszę uzyskać dostęp do serwera (w moim przypadku za pośrednictwem konsoli), a następnie wykonać:
service restart sssd
Potem wszystko po prostu działa. Nie miałem czasu na debugowanie pierwotnej przyczyny, ale ta bandaża działa dla mnie.
Mógłbym rozwiązać problem powolnego hasła poprzez ssh - problem, zaznaczając opcję Włącz przekaźnik DNS w ustawieniach DHCP na moim routerze dlink. Następnie połączenia z SSH działały w ciągu sekundy.
Network Settings -> Router Settings -> Enable DNS Relay [x]
Domyślna konfiguracja przekazuje każde żądanie DNS do dostawcy. Było wolno, chociaż łączyłem się z ssh pi@10.0.0.103. Wskazówką do rozwiązania był wpis w /etc/resolv.conf „search upc.at”, który jest dostarczany przez dhcp.
Podręcznik dlink stwierdza:
When DNS Relay is enabled, DHCP clients of the router will be assigned
the router's LAN IP address as their DNS server. All DNS requests that
the router receives will be forwarded to your ISPs DNS servers.
When DNS relay is disabled, all DHCP clients of the router will
be assigned the ISP's DNS server.
Po wydaniu dhcp na kliencie i serwerze połączenie za pośrednictwem SSH znów było szybkie. HTH.