Быстрые, последовательные попытки подключения SSH зависают

Быстрые, последовательные попытки подключения SSH зависают

У меня есть скрипт bash, который копирует небольшие файлы последовательно с помощью scp. Так что в этом скрипте есть куча scpкоманд. Ключ SSH используется для аутентификации на другом сервере.

Поскольку файлы очень малы, попытки подключения по SSH происходят очень быстро и не так уж далеко в сценарии, и scpмогут зависнуть на неопределенный срок.

  • Ошибок не обнаружено.
  • Сетевое оборудование было исключено из уравнения, и серверы взаимодействуют в режиме реального времени в одной подсети.
  • rsyncПроблема также была продемонстрирована .

Если sleepмежду этими вызовами scp поместить интервал в 1 секунду, скрипт будет работать плавно, без зависаний.

Где мне искать это явное ограничение скорости? Я не вижу этого ни на одном из моих других серверов...

решение1

Иногда люди настраиваютограничение скорости с помощью iptables.

OpenSSH имеет MaxStartupsопцию, которая ограничивает скорость входящих клиентов. По умолчанию (по крайней мере на моем компьютере) это 10:30:100.

man sshd_config

В качестве альтернативы можно включить раннее случайное отбрасывание, указав три значения, разделенных двоеточием, start:rate:full (например, "10:30:60"). sshd(8) будет отклонять попытки подключения с вероятностью rate/100 (30%), если в данный момент есть start (10) неаутентифицированных подключений. Вероятность увеличивается линейно, и все попытки подключения отклоняются, если количество неаутентифицированных подключений достигает full (60).

Еще одна довольно распространенная проблема и причина задержек соединения OpenSSH связана с функцией сервера OpenSSH, которая пытается выполнить обратный поиск входящего IP-адреса при попытке соединения. Я считаю, что эта функциональность DNS нужна для совместимости с некоторыми старыми методами аутентификации, совместимыми с rhost, функциональностью, которую, как я думаю, почти никто больше не использует. В любом случае функция разрешения DNS вызовет проблемы, если DNS-резолверы плохо настроены, настроены на использование сломанного резолвера или, возможно, что-то в обратной зоне, из которой подключается клиентский IP, сломано.

В идеале ответ заключается в том, чтобы исправить DNS и убедиться, что ваш DNS всегда работает без ошибок и быстро отвечает. Но если вам не требуется разрешение DNS, то быстрое решение здесь — остановить сервер от попыток разрешения имен. Установите UseDNS noв вашем sshd_config.

Связанный контент