sshd_config MaxSessions 参数

sshd_config MaxSessions 参数

MaxSessions我的参数有问题sshd_config

我想通过一个 ssh 连接限制会话数量。例如用于 TCP 转发。
当我设置MaxSessions为 0 时,登录不起作用(这很好,这就是它应该如何工作),但是当我设置为 1 时,我可以通过一个 ssh 连接拥有多个会话(即使 1 禁用多路复用),并将其设置为 2 或更多则没有那么效果也是如此。
也许你可以指导我找到正确的解决方案。

我这样测试它:打开从 PuTTY (Win) 到服务器 (BSD) 的 ssh 连接。端口转发正在使用(对于 HTTP)。所以我在浏览器中使用SOCKS。
我同时从两个不同的网站下载两个文件,它可以通过此隧道同时下载两个文件,但它不应该(MaxSessions设置为 1)。

  • sshd- 适用于 FreeBSD 的 OpenSSH 5.2 可移植
  • 操作系统-FBSD 6.2

感谢您的任何帮助。

答案1

来自 sshd_config(5)

最大会话数 指定每个网络连接允许的最大打开会话数。默认值为 10。

这个特定限制的 man 条目有些模糊。添加此功能的更改日志消息更有帮助:

在 sshd_config(5) 中添加了 MaxSessions 选项,以允许控制单个 TCP 连接上支持的多路复用会话的数量。这允许将允许的会话数量增加到之前默认值 10 以上,禁用连接多路复用 (MaxSessions=1) 或完全禁止登录/shell/子系统会话 (MaxSessions=0)。

实际上,MaxSessions 参数旨在限制会话的数量。多路复用ssh 会话可以通过单个 ssh 会话进行。请参阅 ssh_config(5) 的 ControlMaster 部分。

会话多路复用允许您设置单个主连接,然后到同一主机的所有其他连接都可以重用该连接(但它们不必这样做)。这对端口转发或 SOCKS 代理没有影响。它也不会影响我的连接能力再次通过新的网络连接到同一主机。它确实特定于连接多路复用,仅此而已。

答案2

对于那些点击此线程寻找有关限制并发连接的一般信息的人来说,这是一个旁注:

如果你想限制一个用户可以通过ssh并发登录的数量,你可以调整limits.conf

/etc/security/limits.conf:

foo-user           -       maxlogins       1

您可以限制 in 的会话数量sshd_config以防止使用ControlMaster autoin~/.ssh/config

/etc/ssh/sshd_config:

MaxSessions 1

然后sudo service sshd restart或者sudo systemcl restart sshd

答案3

对于那些使用 Chef 的人来说,添加MaxSessions 1to/etc/ssh/sshd_config会中断,knife ssh因为它似乎依赖于多路复用。如果有人有解决方法,我很想听听! (添加 MaxSessions 1 并且不会破坏厨师,那就是......)。

笔记:对于上面的内容 ^^^ 您会看到如下错误:

  • ERROR: IOError: closed stream
  • ERROR: Net::SSH::Disconnect: connection closed by remote host

相关内容