快速、连续的 SSH 连接尝试挂起

快速、连续的 SSH 连接尝试挂起

我有一个 bash 脚本,它使用 连续复制小文件scp。因此,此脚本中有很多scp命令。SSH 密钥用于向另一台服务器进行身份验证。

由于文件太小,SSH 连接尝试会非常快,并且刚进入脚本不久,就会scp无限期挂起。

  • 没有产生任何错误。
  • 网络设备已从等式中消除,并且服务器在同一个子网上进行实时通信。
  • rsync问题也已经得到证实。

如果sleep在这些 scp 调用之间放置 1 秒的时间,则脚本将顺利运行,不会挂起。

我应该在哪里寻找这种明显的速率限制?我在其他任何服务器之间都没有看到这种情况...

答案1

有时人们会设置使用 iptables 限制速率

OpenSSH 有一个MaxStartups选项可以对传入客户端进行一些速率限制。默认值(至少在我的计算机上)是10:30:100

sshd_config 命令

或者,可以通过指定三个冒号分隔的值 start:rate:full(例如“10:30:60”)来启用随机早期丢弃。如果当前有 start(10)个未经身份验证的连接,sshd(8) 将以 rate/100(30%)的概率拒绝连接尝试。如果未经身份验证的连接数达到 full(60),则概率会线性增加,并且所有连接尝试都将被拒绝。

OpenSSH 连接延迟的另一个半常见问题和原因与 OpenSSH 服务器上的一项功能有关,该功能将尝试在连接尝试时对传入的 IP 地址进行反向查找。我相信它需要此 DNS 功能才能与一些较旧的 rhost 兼容身份验证方法兼容,我认为几乎没有人再使用此功能。无论如何,如果 DNS 解析器配置不当、配置为使用损坏的解析器,或者客户端 IP 连接的反向区域出现问题,DNS 解析功能将导致问题。

理想的答案是修复 DNS,并确保您的 DNS 始终正常工作且不会出错,并快速响应。但是,如果您不需要 DNS 解析,那么这里的一个快速解决方案是阻止服务器尝试解析名称。UseDNS no在您的 中设置sshd_config

相关内容