通过 <ip 地址>端口 22 重置连接,同时通过 SSH 通过桥接计算机从远程计算机获取文件,循环执行此操作



我开发了一个bash脚本,给定一个文件路径列表,运行一个循环,其中:

  1. 它通过ssh访问桥接机,并从这里使用rsync从另一台机器获取文件到临时目录。
  2. 从我的本地机器,它获得之前在桥机上复制的文件。

它在一个循环中执行这两个操作,每次循环获取一个不同的文件,重复循环获取10个不同的文件。

有时会弹出以下错误。它的原因是什么呢?

rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(228) [Receiver=3.2.3]
kex_exchange_identification: read: Connection reset by peer
Connection reset by <ip address> port 22

我已经尝试暂时从列表中排除一些文件(例如,排除列表的前半部分,然后排除列表的后半部分),我看到错误不再显示。

这让我认为是服务器停止了我的脚本,因为它检测到脚本正在执行太多操作/太快(这将解释消息Connection reset by <ip address> port 22)。

所以我试着在循环中放入一些睡眠命令,但错误仍然出现。

我能做什么?

正如这个线程和这个SO线程所指出的,这似乎确实是机器-ssh -target-of- firewall的问题。

我通过在ssh命令之间放置sleep命令并增加睡眠时间直到错误不再出现(在我的情况下为15秒)来解决它。

所以我的猜测是,当远程机器通过ssh运行的命令超过某种阈值时,远程机器的防火墙会停止执行这些命令,例如"每次命令数"、"命令专用内存"或类似的阈值。

相关内容

  • 没有找到相关文章