![Rsync 和“ssh_exchange_identification:远程主机关闭连接”](https://linux22.com/image/555690/Rsync%20%E5%92%8C%E2%80%9Cssh_exchange_identification%EF%BC%9A%E8%BF%9C%E7%A8%8B%E4%B8%BB%E6%9C%BA%E5%85%B3%E9%97%AD%E8%BF%9E%E6%8E%A5%E2%80%9D.png)
我有一个脚本,它将本地目录 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).