后台: OpenSSH中MaxStartups
的默认设置是10:30:60,大多数Linux发行版都保持默认设置。这意味着在sshd开始丢弃30%的新传入连接之前,一次只能有10个ssh连接交换密钥和进行身份验证,而在60个未经身份验证的连接中,所有新连接都将被丢弃。建立连接后,它不会计入此限制。参见例如this question
问题:我正在使用GNU parallel在大量后端节点上运行一些繁重的数据处理。我需要通过单个前端机器访问这些节点,我正在使用ssh:s ProxyCommand
来设置隧道以透明地访问后端。但是,我经常达到最大的未经身份验证的连接限制,因为并行产生的ssh连接比前端可以立即进行身份验证更多。
我尝试使用ControlMaster auto
重复使用前端的单个连接,但没有运气。
问题:如何限制新ssh连接的打开率?我可以控制在给定时间打开多少未经身份验证的连接,并延迟新连接,直到另一个连接经过身份验证?
答案 0 :(得分:0)
使用ControlMaster auto
仍然听起来像是要走的路。它不应该命中MaxStartups
,因为它保持单个连接打开(并在该连接上打开会话)。它以什么方式对你不起作用?
在ControlMaster
设置ProxyCommand
的情况下,可能阻止ControlPath
工作的其他相关设置为ControlPath %r@%h:%p
:
{user}@{host}:{port}
- 将套接字命名为ControlPersist
和ControlPersist yes
:
-O exit
- 保持初始连接(即使已关闭),直到被告知退出(ControlPersist 1h
)