Jak przyspieszyć logowanie SSH?

23

Spoza mojego domu, za każdym razem, gdy loguję się do mojego serwera Ubuntu za pomocą SSH, otrzymywanie monitu o hasło zajmuje około 6 sekund, jednak po zalogowaniu się na moim serwerze hostingowym zajmuje to około 1 sekundy. Co mogę zrobić, aby to przyspieszyć?

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.1"
$ ssh -v
OpenSSH_4.7p1 Debian-8ubuntu1.2, OpenSSL 0.9.8g 19 Oct 2007
$ cat /proc/cpuinfo
model name      : Dual-Core AMD Opteron(tm) Processor 1210
cpu MHz         : 1000.000
cache size      : 1024 KB
$ cat /proc/meminfo
MemTotal:      2074528 kB
grokus
źródło

Odpowiedzi:

38

Głównym powodem, dla którego to widziałem, jest opcja konfiguracji w SSHD. UseDNSTa opcja (domyślnie włączona) powoduje, że serwer wykonuje rozpoznawanie DNS na przychodzących żądaniach. Czasochłonna operacja. Widziałem logowanie trwające od jednej minuty plus oczekiwanie na monit o podanie hasła poniżej kilku sekund. Jeśli edytujesz /etc/ssh/sshd_configna serwerze i dodajesz (jeśli go nie ma) na dole, UseDNS nozrestartuj demona SSH, przy service ssh restartnastępnym połączeniu powinieneś zobaczyć poprawę.

Marco Ceppi
źródło
6
Lepiej naprawić konfigurację DNS.
Thorbjørn Ravn Andersen
To zadziałało świetnie !! Dzięki! Czas logowania skrócił się z 20-30 sekund do mniej niż 5 sekund :)
AntonioCS
3
Jakie są korzyści z UseDNSwłączenia?
ændrük
Być świadomym! kiedy ustawisz dyrektywę UserDNSpo Matchdyrektywie, pojawi się błąd: is not allowed within a Matchzablokuj, jeśli zrestartujesz sshd, nie będziesz mógł ssh na swoim serwerze. Popełniłem ten błąd i zostałem zablokowany na moim serwerze. Zawsze pamiętaj, aby nie dodawać żadnej dyrektywy na dole, sshd_configjeśli masz Matchw niej dyrektywę.
Adriano Rosa
6

Dla mnie powodem numer 2 (po opcji UseDNS po stronie serwera) dla długich loginów sesji SSH są próby połączenia przez klienta przy użyciu IPv6 (co oczywiście nie jest poprawnie skonfigurowane w mojej sieci - lub prawie w żadnej innej sieci, z tego powodu).

Zobacz HOWTO: Przyspieszenie logowania SSH na forach Ubuntu.

„Rozwiązaniem” jest włączenie tylko IPv4:

1) albo dla danego wywołania klienta SSH:

ssh -4 login@hostname

2) lub globalnie w konfiguracji klienta ssh w /etc/ssh/ssh_config:

Host *
   AddressFamily inet

Oczywiście poprawniejsze byłoby prawidłowe skonfigurowanie IPv6 w sieci, ale kto ma na to czas :)

Aleksander Adamowski
źródło
3

Spróbuj dodać następną opcję za pomocą polecenia ssh:

-o "PreferredAuthentications=password"

(zapobiega to negocjowaniu przez ssh jakiejkolwiek innej metody uwierzytelniania i przyspiesza hasło promtp!)

perseo22
źródło
2
Po co w ogóle używać haseł? Dlaczego nie klucze?
TJ Ellis,
1
Łatwo: ponieważ możesz nie pozwolić na używanie kluczy! (sshd nie jest skonfigurowany do ich używania, złe uprawnienia do plików użytkownika itp. 9
perseo22
2

Dodatkowo wpisz to na zdalnym komputerze (jako użytkownik, z którego się zalogujesz), aby ukryć wszelkie komunikaty MOTD:

touch ~/.hushlogin

Nie robi tak dużej różnicy jak wyłączenie, UseDNSale może pomóc w wolniejszych połączeniach.

Oli
źródło
1
-1: MOTD wyświetla się dopiero po pomyślnym zalogowaniu. Nie spowoduje to, że monit o hasło pojawi się szybciej.
Asa Ayers,
2
To prawda, ale wciąż przydatny komentarz.
sebastian_k
2

Ponieważ używasz raczej starej wersji Ubuntu, może to być ten błąd: https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/300151

Ponowne uruchomienie dbus ( /etc/init.d/dbus restart) może pomóc.

Marcel Stimberg
źródło
Mam ulepszony zestaw 10.04 z 9.04 i 9.10. Ponowne uruchamianie dbus skrócono time ssh remoteServer datez 8 do 0,5 s.
djeikyb