Wyszukiwanie w witrynie

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:

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

  1. 5 najlepszych praktyk zabezpieczania i ochrony serwera SSH
  2. 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.