Назад | Перейти на главную страницу

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

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

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

Я видел эту проблему раньше. Вам нужно провернуть 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).