我有一个bash脚本,它使用scp连续复制小文件。所以这个脚本中有很多scp命令。正在使用SSH密钥对另一个服务器进行身份验证。
由于文件非常小,所以SSH连接尝试的速度非常快,而且在脚本中也不会太远,因此scp将无限期地挂起。
rsync也演示了这个问题。如果在这些scp调用之间放置1秒的sleep,则脚本运行平稳,不挂起。
我应该在哪里寻找这个明显的限速?我没看到我的其他服务器之间有这个..。
发布于 2021-09-02 18:33:38
有时人们设置使用iptables的速率限制。
OpenSSH有MaxStartups选项,它对传入客户端执行某种速率限制。默认的(至少在我的计算机上)是10:30:100。
man sshd_config也可以通过指定三个冒号分隔值start:rate:full (例如"10:30:60")启用随机早期下降。如果目前有未验证的连接,sshd(8)将以速率/100 (30%)的概率拒绝连接尝试。如果未经身份验证的连接数量达到满(60),则概率线性增加,并且拒绝所有连接尝试。
OpenSSH连接延迟的另一个半常见问题和原因与OpenSSH服务器上的一个功能有关,该特性将试图在尝试连接时反向查找传入的IP地址。我认为它需要这个DNS功能来与一些旧的rhost兼容的身份验证方法兼容,我认为几乎没有人再使用这种功能了。无论如何,如果DNS解析器配置不当,配置为使用已损坏的解析器,或者客户端IP正在连接的反向区域被破坏,则DNS解析功能将导致问题。
理想情况下,解决方法是修复DNS,并确保DNS始终正常工作,并且快速回复。但是,如果您不需要DNS解析,那么这里的一个快速解决方案就是阻止服务器试图解析名称。在您的UseDNS no中设置sshd_config。
https://serverfault.com/questions/1076424
复制相似问题