Rsync и "ssh_exchange_identification: соединение закрыто удаленным хостом"

У меня есть скрипт, который rsync является локальным каталогом около 10 удаленных серверов. Он в основном имеет список серверов и циклов для каждого из них, выполняющих rsync. Чтобы ускорить процесс, у меня есть его форк для каждого из rsyncs, так что все 10 происходят параллельно. Проблема в том, что последние несколько серверов возвращаются с "ssh_exchange_identification: Соединение закрыто удаленным хостом". Этого не происходит, когда выполняется rsyncs по отдельности или в последовательном режиме, а установка задержки в полсекунды между ними устраняет проблему (обычно иногда последний сервер в списке по-прежнему возвращает ошибку).

Кто-нибудь знает, почему это будет происходить? Я предполагаю, что это проблема с rysnc, а не с моим сценарием, так как скрипт все равно выполняет системный вызов rysnc.

1 ответ

Решение

Я видел эту проблему раньше. Вам нужно провернуть MaxStartups значение на серверах SSH, к которым вы подключаетесь. Обратите внимание, что значением по умолчанию является 10. Вы можете сделать это, отредактировав /etc/ssh/sshd_config и перезагрузите демон SSH (надеюсь, вы управляете удаленными серверами).

От man sshd_config:

 MaxStartups
         Specifies the maximum number of concurrent unauthenticated connections to the SSH daemon.  Additional connections will be dropped until authentication succeeds or the
         LoginGraceTime expires for a connection.  The default is 10.

         Alternatively, random early drop can be enabled by specifying the three colon separated values “start:rate:full” (e.g. "10:30:60").  sshd(8) will refuse connection attempts
         with a probability of “rate/100” (30%) if there are currently “start” (10) unauthenticated connections.  The probability increases linearly and all connection attempts are
         refused if the number of unauthenticated connections reaches “full” (60).
Другие вопросы по тегам