单台 Linux 机器上的 SSH 连接数

tur*_*its 13 ssh limit

我遇到了必须通过 puTTY 访问 Linux 机器的情况。我对 SSH 进行了各种尝试,但未能连接到该机器。然后我意识到我的同事正在以 root 用户身份访问同一台 Linux 机器,而我也想以 root 用户身份访问。我让他注销,以便我可以以 root 身份登录。有没有办法限制 linux 操作系统上的 SSH 登录次数?这是某种安全功能,可以区分基于 Windows 的操作系统和基于 linux 的操作系统。

Mat*_*att 8

你可能/etc/security/limits.conf像这样设置了限制

root hard maxlogins 1
Run Code Online (Sandbox Code Playgroud)

如果需要,将限制 (1) 更改为更高的值。


HBr*_*ijn 8

是的,可以限制并发登录会话的数量,尽管大多数 Linux 发行版不会在其默认设置中强加此类限制。

Linux 在设计上是合适的多用户系统,通常情况下,为同一用户创建多个并发 SSH 会话应该不会有任何问题。

SSH 服务器可以MaxSessions通过配置文件中的选项施加此类限制。通过 PAM,您可以施加这些限制以及其他人已经指出的限制。


Jua*_*uan 6

试图说服独立sshd守护进程限制会话数量充满了漏洞。诸如MaxSessions限制OP所谈论的内容之外的东西之类的事情。在 linux 上会sshd被忽略limits.conflogin.conf在 FreeBSD 上也类似),除非您正确配置以通过 PAM 路由所有传入会话,并使用正确配置的 PAM 模块首先检查 limit.conf 等内容。很难让它正常工作。

另一方面,如果您不作为独立守护进程启动,那么您可以使用按需sshd生成的“事物”中的限制功能。sshd

例如,inetd具有xinetd连接限制功能(通常默认不对分叉子项的数量实施任何限制)。在经典中inetd,它被称为“max-child”。使用xinetd,查找instances配置旋钮。例如inetd样式:

ssh  stream  tcp  nowait/3  root  /usr/sbin/sshd  sshd -i -4
Run Code Online (Sandbox Code Playgroud)

这将并发 ssh 连接数限制为 3。

对于那些如此倾向于的人,systemd可以替换 的功能inetd,并且我相信有一种方法可以限制服务的实例数量。留给读者的练习(或添加包含详细信息的评论!)。

  • `systemd` 用户会想要查看 `systemctl show sshd.socket | grep -i maxcon` 和 `man systemd.socket`。 (4认同)