2

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

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

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

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

4

2 回答 2

1

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

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

编辑:

--sshdelay 在版本 20130122 中实现。

于 2012-08-02T07:12:57.793 回答
0

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

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

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

ControlPersist

  • ControlPersist yes- 保持初始连接(即使关闭)直到被告知退出(-O exit
  • ControlPersist 1h- 坚持1小时
于 2012-08-03T14:46:28.873 回答