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 auto
in~/.ssh/config
/etc/ssh/sshd_config
:
MaxSessions 1
然后sudo service sshd restart
或者sudo systemcl restart sshd
答案3
对于那些使用 Chef 的人来说,添加MaxSessions 1
to/etc/ssh/sshd_config
会中断,knife ssh
因为它似乎依赖于多路复用。如果有人有解决方法,我很想听听! (添加 MaxSessions 1 并且不会破坏厨师,那就是......)。
笔记:对于上面的内容 ^^^ 您会看到如下错误:
ERROR: IOError: closed stream
ERROR: Net::SSH::Disconnect: connection closed by remote host