使用GNU parallel时,如何限制新传出ssh连接的速率?

使用GNU parallel时,如何限制新传出ssh连接的速率?,ssh,limit,gnu-parallel,Ssh,Limit,Gnu Parallel,Background:OpenSSH中MaxStartups的默认设置是10:30:60,大多数Linux发行版都保留此默认设置。这意味着在sshd开始删除30%的新传入连接之前,一次只能有10个ssh连接在交换密钥和进行身份验证,而在60个未经身份验证的连接中,所有新连接都将被删除。一旦建立了连接,它就不计入此限制。见例 问题:我正在使用GNU parallel在大量后端节点上运行一些繁重的数据处理。我需要通过一台前端机器访问这些节点,并且我正在使用ssh:sProxyCommand设置一个隧

Background:OpenSSH中
MaxStartups
的默认设置是10:30:60,大多数Linux发行版都保留此默认设置。这意味着在sshd开始删除30%的新传入连接之前,一次只能有10个ssh连接在交换密钥和进行身份验证,而在60个未经身份验证的连接中,所有新连接都将被删除。一旦建立了连接,它就不计入此限制。见例

问题:我正在使用GNU parallel在大量后端节点上运行一些繁重的数据处理。我需要通过一台前端机器访问这些节点,并且我正在使用ssh:s
ProxyCommand
设置一个隧道来透明地访问后端。然而,我一直在达到未经验证的最大连接限制,因为并行产生的ssh连接比前端一次可以验证的多

我曾尝试使用
ControlMaster auto
重用到前端的单个连接,但没有成功


问题:如何限制打开新ssh连接的速率?我能否控制在给定时间有多少未经验证的连接处于打开状态,并延迟新连接,直到另一个连接经过验证?

我认为GNU Parallel需要一个“每秒最多生成这么多作业”选项。对于MaxStartups=10:30:60、CPU速度快但延迟为500毫秒的主机,使用默认工作模式可能是有意义的

我们可以在明天讨论吗parallel@gnu.org?

编辑:


--sshdelay是在20130122版本中实现的。

使用
ControlMaster auto
听起来仍然是一条路要走。它不应该点击
MaxStartups
,因为它保持单个连接打开(并打开该连接上的会话)。在什么方面它对你不起作用

考虑到您的
ProxyCommand
设置,可能会阻止
ControlMaster
工作的其他相关设置有
ControlPath

  • ControlPath%r@%h:%p
    -命名套接字
    {user}@{host}:{port}
ControlPersist

  • ControlPersist yes
    -保持初始连接(即使已关闭),直到被告知退出(
    -O退出
  • ControlPersist 1h
    -持续1小时

这绝对是个好主意,应该在GNU并行论坛上讨论。但严格地说,它现在并不能解决问题,所以我不认为这是可以接受的我一直在玩弄我自己的一些想法,以后可能会回到这个问题上来。