Rsync 和“ssh_exchange_identification:远程主机关闭连接”

Rsync 和“ssh_exchange_identification:远程主机关闭连接”

我有一个脚本,它将本地目录 rsync 到大约 10 个远程服务器。它基本上有一个服务器列表,并循环遍历每个执行 rsync 的服务器。为了加快进程,我让它为每个 rsync 创建一个 fork,这样所有 10 个服务器都可以并行进行。问题是最后几个服务器返回“ssh_exchange_identification:远程主机关闭连接”。单独或连续执行 rsync 时不会发生这种情况,在每次 rsync 之间设置半秒延迟可以解决问题(通常,有时列表中的最后一个服务器仍会返回错误)。

有人知道为什么会发生这种情况吗?我认为这是 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).

相关内容