SSH多路复用的局限性


26

我的.ssh/config档案中有以下项目

Host AAA
    User BBB
    HostName CCC
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

上面的内容使我可以通过相同的ssh连接多路复用多个ssh会话,而不必每次需要新会话时都键入密码(只要主连接保持打开状态)。

但是,我注意到,一旦我有相对较高的多路复用连接数(〜7),便无法向同一多路复用连接添加更多会话,并且开始出现以下错误:

> ssh -X AAA

mux_client_request_session: session request failed: Session open refused by peer
Password: 

我的问题:

为什么会出现此错误?我可以在同一连接中多路复用的ssh会话数是否有限制?我可以更改该限制吗?那是个坏主意吗?


2
我无法直接回答问题,但是可以提供一些有关解决问题的建议。由于对等方拒绝连接,因此我将先查看您要连接的系统上的日志。查看sshd是否给出任何错误。如果不是,请增加LogLevel,然后重试。如果您发现一条不是立即可见的日志消息,并且搜索该短语没有帮助,则可以在源代码上使用grep。错误消息经常被一系列条件包围-不满足其中一个(或某些)条件,这就是出现此消息的原因。
肖恩·高夫

Answers:


26

sshd服务器上的后台程序限制每个网络连接的会话数量。这由中的MaxSessions选项控制/etc/ssh/sshd_config。另外,MaxStartups如果您使用大量会话,则可能需要增加该选项。(见man sshd_config更多的细节。)要修改的选项MaxSessions限制了OpenSSH中5.1被引入,它看起来这个数字是以前很难固定在10,如果你超出MaxSessions服务器上,你会看到sshd[####]: error: no more sessions在服务器的日志。


4

我在具有早期版本的OpenSSH的服务器上遇到了此问题。我控制了服务器,并通过在命名配置中创建两个CNAME解决了该问题:

realhost.myexample.com.      IN  A       XXX.XXX.XXX.XXX
realhost2.myexample.com.     IN  CNAME   realhost.myexample.com.
realhost3.myexample.com.     IN  CNAME   realhost.myexample.com.

然后,在我的本地ssh客户端配置中:

ControlMaster auto
ControlPath ~/.ssh/%r_%p_%h

host realhost
hostname realhost.myexample.com

host realhost2
hostname realhost2.myexample.com

host realhost3
hostname realhost3.myexample.com

ControlPath语句是这样的,因此控件套接字名称不会互相影响。

就是这样,但是为了易于管理,我在客户端为“ ssh”编写了一个包装器脚本。它了解到存在主机的“组”(在这种情况下,realhost,realhost1,realhost2组成一个组)。发出“ sshwrapper realhost”时,如果没有打开的通道,则将全部三个打开,并开始一个会话。下次运行时,它将计算每个通道的打开连接数,并在连接数最少的通道中打开新会话。

使用一台真实主机和两台“伪”主机,我可以连接30次,然后再收到错误消息。登录速度非常快,除了初始时间需要一秒钟或两秒钟,因为这三个控制通道均已打开。


该脚本听起来像个真正的节省时间的工具,它将非常有用。如果您仍然拥有它,您是否愿意与公众分享它?
thefourtheye

我不确定这里是否合适,因为这不是问题的答案。另外,我只是为自己编写了它,它在Mac客户端上运行(用于登录到我的Linux服务器)。该代码解析“ ps”输出,由于“ ps”语法不同,因此需要进行更改才能在Linux上运行。

很公平。不过,感谢您分享总体思路。
thefourtheye

我已将脚本放置在moosiefinance.com:8081/sshm.zip。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.