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

时间:2012-07-20 08:51:32

标签: ssh limit gnu-parallel

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

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

我尝试使用ControlMaster auto重复使用前端的单个连接,但没有运气。

问题:如何限制新ssh连接的打开率?我可以控制在给定时间打开多少未经身份验证的连接,并延迟新连接,直到另一个连接经过身份验证?

1 个答案:

答案 0 :(得分:0)

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

ControlMaster设置ProxyCommand的情况下,可能阻止ControlPath工作的其他相关设置为ControlPath %r@%h:%p

  • {user}@{host}:{port} - 将套接字命名为ControlPersist

ControlPersist yes

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