Поиск по сайту:

4 способа ускорить SSH-соединения в Linux


SSH — самый популярный и безопасный метод удаленного управления серверами Linux. Одной из проблем удаленного управления сервером является скорость соединения, особенно когда речь идет о создании сеанса между удаленным и локальным компьютером.

В этом процессе есть несколько узких мест: один из сценариев — когда вы впервые подключаетесь к удаленному серверу; обычно для установления сеанса требуется несколько секунд. Однако когда вы пытаетесь запустить несколько подключений подряд, это приводит к дополнительным затратам (сочетание избыточного или косвенного времени вычислений, памяти, пропускной способности или других связанных ресурсов для выполнения операции).

В этой статье мы поделимся четырьмя полезными советами о том, как ускорить удаленные SSH-соединения в Linux.

1. Принудительное соединение SSH через IPV4

OpenSSH поддерживает как IPv4, так и IP6, но иногда соединения IPv6 работают медленнее. Таким образом, вы можете рассмотреть возможность принудительного подключения ssh только через IPv4, используя следующий синтаксис:

ssh -4 [email 

Альтернативно, используйте директиву AddressFamily (определяет семейство адресов, которое будет использоваться при подключении) в файле конфигурации ssh /etc/ssh/ssh_config (глобальная конфигурация) или ~ /.ssh/config (файл, специфичный для пользователя).

Принимаемые значения: «any», «inet» только для IPv4 или «inet6».

vi ~.ssh/config 

Вот полезное руководство по настройке файла конфигурации ssh для конкретного пользователя:

  1. Как настроить пользовательские соединения SSH для упрощения удаленного доступа

Кроме того, на удаленном компьютере вы также можете указать демону sshd учитывать соединения через IPv4, используя указанную выше директиву в файле /etc/ssh/sshd_config.

2. Отключите поиск DNS на удаленном компьютере.

По умолчанию демон sshd ищет имя удаленного хоста, а также проверяет, соответствует ли разрешенное имя хоста для удаленного IP-адреса тому же самому IP-адресу. Это может привести к задержкам при установлении соединения или создании сеанса.

Директива UseDNS управляет вышеуказанной функциональностью; чтобы отключить его, найдите и раскомментируйте его в файле /etc/ssh/sshd_config. Если он не установлен, добавьте его со значением no.

UseDNS  no

3. Повторное использование SSH-соединения

Клиентская программа ssh используется для установления соединений с демоном sshd, принимающим удаленные соединения. Вы можете повторно использовать уже установленное соединение при создании нового сеанса ssh и это может значительно ускорить последующие сеансы.

Вы можете включить это в своем файле ~/.ssh/config.

Host *
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist 600

Приведенная выше конфигурация (Хост *) позволит повторно использовать соединение для всех удаленных серверов, к которым вы подключаетесь с помощью этих директив:

  • ControlMaster – позволяет совместно использовать несколько сеансов через одно сетевое соединение.
  • ControlPath – определяет путь к управляющему сокету, используемому для совместного использования соединения.
  • ControlPersist – при использовании вместе с ControlMaster сообщает ssh, чтобы главное соединение оставалось открытым в фоновом режиме (ожидая будущих клиентских подключений) после закрытия исходного клиентского соединения.

Вы можете включить это для подключений к определенному удаленному серверу, например:

Host server1
	HostName   www.example.com
	IdentityFile  ~/.ssh/webserver.pem
      	User username_here
	ControlMaster auto
	ControlPath  ~/.ssh/sockets/%r@%h-%p
	ControlPersist  600

Таким образом, вы понесете накладные расходы только для первого соединения, а все последующие соединения будут намного быстрее.

4. Используйте специальный метод аутентификации SSH.

Другой способ ускорить ssh-соединения — использовать определенный метод аутентификации для всех ssh-соединений, и здесь мы рекомендуем настроить вход по ssh без пароля с помощью ssh keygen за 5 простых шагов.

Как только это будет сделано, используйте директиву PreferredAuthentications в файлах ssh_config (глобальных или пользовательских) выше. Эта директива определяет порядок, в котором клиент должен использовать методы аутентификации (вы можете указать список, разделенный командами, чтобы использовать более одного метода).

PreferredAuthentications=publickey 

При желании используйте приведенный ниже синтаксис из командной строки.

ssh -o "PreferredAuthentications=publickey" [email 

Если вы предпочитаете аутентификацию по паролю, которая считается небезопасной, используйте это.

ssh -o "PreferredAuthentications=password" [email 

Наконец, вам необходимо перезапустить демон sshd после внесения всех вышеуказанных изменений.

systemctl restart sshd	#Systemd
service sshd restart 		#SysVInit

Дополнительную информацию об используемых здесь директивах см. на справочных страницах ssh_config и sshd_config.

man ssh_config
man sshd_config 

Также ознакомьтесь с этими полезными руководствами по обеспечению безопасности ssh в системах Linux:

  1. 5 лучших практик по обеспечению безопасности и защиты SSH-сервера
  2. Как отключить неактивные или простаивающие SSH-соединения в Linux

На данный момент это все! Есть ли у вас какие-либо советы/рекомендации по ускорению SSH-соединений. Нам бы хотелось услышать о других способах сделать это. Используйте форму комментариев ниже, чтобы поделиться с нами.