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).