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 для конкретного пользователя:
- Как настроить пользовательские соединения 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:
- 5 лучших практик по обеспечению безопасности и защиты SSH-сервера
- Как отключить неактивные или простаивающие SSH-соединения в Linux
На данный момент это все! Есть ли у вас какие-либо советы/рекомендации по ускорению SSH-соединений. Нам бы хотелось услышать о других способах сделать это. Используйте форму комментариев ниже, чтобы поделиться с нами.