4 sposoby na przyspieszenie połączeń SSH w systemie Linux
SSH to najpopularniejsza i najbezpieczniejsza metoda zdalnego zarządzania serwerami Linux. Jednym z wyzwań związanych ze zdalnym zarządzaniem serwerami jest szybkość połączenia, szczególnie jeśli chodzi o tworzenie sesji między maszyną zdalną i lokalną.
Istnieje kilka wąskich gardeł w tym procesie. Jeden ze scenariuszy ma miejsce, gdy po raz pierwszy łączysz się ze zdalnym serwerem; Nawiązanie sesji zwykle zajmuje kilka sekund. Jednak próba uruchomienia wielu połączeń kolejno powoduje obciążenie (połączenie nadmiernego lub pośredniego czasu obliczeń, pamięci, przepustowości lub innych powiązanych zasobów potrzebnych do przeprowadzenia operacji).
W tym artykule podzielimy się czterema przydatnymi wskazówkami, jak przyspieszyć zdalne połączenia SSH w systemie Linux.
1. Wymuś połączenie SSH przez IPV4
OpenSSH obsługuje zarówno IPv4/IP6, ale czasami połączenia IPv6 są zwykle wolniejsze. Możesz więc rozważyć wymuszenie połączeń SSH tylko przez IPv4, używając poniższej składni:
ssh -4 [email
Alternatywnie możesz użyć dyrektywy AddressFamily (określa rodzinę adresów używaną podczas łączenia) w pliku konfiguracyjnym ssh /etc/ssh/ssh_config (konfiguracja globalna) lub ~ /.ssh/config (plik specyficzny dla użytkownika).
Akceptowane wartości to „any”, „inet” tylko dla protokołu IPv4 lub „inet6”.
vi ~.ssh/config
Oto przydatny przewodnik startowy dotyczący konfigurowania pliku konfiguracyjnego ssh specyficznego dla użytkownika:
- Jak skonfigurować niestandardowe połączenia SSH, aby uprościć dostęp zdalny
Dodatkowo na komputerze zdalnym możesz również poinstruować demona sshd, aby uwzględniał połączenia przez IPv4, korzystając z powyższej dyrektywy w pliku /etc/ssh/sshd_config.
2. Wyłącz wyszukiwanie DNS na komputerze zdalnym
Domyślnie demon sshd wyszukuje nazwę zdalnego hosta, a także sprawdza, czy rozpoznana nazwa hosta dla zdalnego adresu IP jest odwzorowana z powrotem na ten sam adres IP. Może to skutkować opóźnieniami w ustanawianiu połączenia lub tworzeniu sesji.
Dyrektywa UseDNS kontroluje powyższą funkcjonalność; aby go wyłączyć, wyszukaj go i odkomentuj w pliku /etc/ssh/sshd_config. Jeśli nie jest ustawiony, dodaj go z wartością no
.
UseDNS no
3. Użyj ponownie połączenia SSH
Program klienta ssh służy do nawiązywania połączeń z demonem sshd akceptującym połączenia zdalne. Możesz ponownie wykorzystać już nawiązane połączenie podczas tworzenia nowej sesji ssh, co może znacznie przyspieszyć kolejne sesje.
Możesz to włączyć w swoim pliku ~/.ssh/config.
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
Powyższa konfiguracja (Host *) umożliwi ponowne wykorzystanie połączenia dla wszystkich serwerów zdalnych, z którymi łączysz się za pomocą tych dyrektyw:
- ControlMaster – umożliwia współdzielenie wielu sesji w ramach jednego połączenia sieciowego.
- ControlPath – definiuje ścieżkę do gniazda sterującego służącego do udostępniania połączenia.
- ControlPersist – używany razem z ControlMaster, informuje ssh, aby połączenie główne pozostało otwarte w tle (oczekiwanie na przyszłe połączenia klienta) po zamknięciu początkowego połączenia klienta.
Możesz włączyć tę opcję dla połączeń z określonym serwerem zdalnym, na przykład:
Host server1
HostName www.example.com
IdentityFile ~/.ssh/webserver.pem
User username_here
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
W ten sposób obciążysz tylko pierwsze połączenie, a wszystkie kolejne będą znacznie szybsze.
4. Użyj określonej metody uwierzytelniania SSH
Innym sposobem na przyspieszenie połączeń ssh jest użycie danej metody uwierzytelniania dla wszystkich połączeń ssh i tutaj zalecamy skonfigurowanie logowania bez hasła ssh za pomocą ssh keygen w 5 prostych krokach.
Gdy już to zrobisz, użyj dyrektywy PreferredAuthentications w plikach ssh_config (globalnych lub specyficznych dla użytkownika) powyżej. Ta dyrektywa określa kolejność, w jakiej klient powinien wypróbowywać metody uwierzytelniania (można określić listę oddzieloną poleceniami, aby użyć więcej niż jednej metody).
PreferredAuthentications=publickey
Opcjonalnie użyj poniższej składni z wiersza poleceń.
ssh -o "PreferredAuthentications=publickey" [email
Jeśli wolisz uwierzytelnianie hasłem, które jest uważane za niezabezpieczone, użyj tego.
ssh -o "PreferredAuthentications=password" [email
Na koniec musisz ponownie uruchomić demona sshd po wprowadzeniu wszystkich powyższych zmian.
systemctl restart sshd #Systemd
service sshd restart #SysVInit
Więcej informacji na temat używanych tutaj dyrektyw można znaleźć na stronach podręcznika ssh_config i sshd_config.
man ssh_config
man sshd_config
Sprawdź także te przydatne przewodniki dotyczące zabezpieczania ssh w systemach Linux:
- 5 najlepszych praktyk zabezpieczania i ochrony serwera SSH
- Jak rozłączyć nieaktywne lub bezczynne połączenia SSH w systemie Linux
To wszystko na teraz! Czy masz jakieś wskazówki/wskazówki dotyczące przyspieszania połączeń SSH? Chętnie dowiemy się o innych sposobach osiągnięcia tego celu. Skorzystaj z poniższego formularza komentarza, aby podzielić się z nami.