将并发 SSH/SFTP 连接限制为每个用户 2 个

将并发 SSH/SFTP 连接限制为每个用户 2 个

我在 /etc/security/limits.conf 中进行了更改

test        hard    maxlogins       2
sftptest    hard    maxlogins       2
  • 在上面的条目之后我测试了以下场景

    1. 当我尝试打开第 3 个会话时,打开 2 个 putty 会话,它会自动断开连接(与 ssh 用户正常工作,不适用于 sftp 用户)
    2. 当我尝试从 filezilla / winscp 连接自动断开连接打开第 3 个会话时,打开 2 个 putty 会话(与 ssh 用户正常工作) 3.当我尝试在 filezilla/winscp 中打开 3 个会话时,我能够打开 3 个会话(不能在职的)
    3. 当我尝试使用 sftp 用户在 filezilla/winscp 中打开 3 个会话时,我能够打开所有三个会话 - putty 客户端和 Winscp/filezilla 有什么区别吗? -SSH用户有shell登录但sftp用户没有shell登录
  • 有没有机会限制sftp用户的连接2?

我对 Linux 还很陌生。

答案1

您可以限制该用户的进程数。在 scp 期间,将使用 root、sshd 和 sftptest(在您的情况下)用户创建 3 个进程。
因此,您可以在 /etc/security/limits.conf 中限制该用户的最大进程数

sftptest hard nproc 2

这不是一种非常有效的方法,因为您在经过身份验证后会阻止连接。

答案2

虽然我不知道这是一个明确的答案:

  • 我希望“ssh”(或通过控制台/ getty 访问)生成登录 shell
  • 我不希望 sftp (也不希望在 X 窗口会话中启动终端仿真器)生成登录 shell,但我希望启动 shell

登录 shell 和非登录 shell 有重要区别。 “登录 shell”将在启动时执行配置文件,但非登录 shell 不会(它将执行 shell rc 文件)。

我必须承认,我对区分这两种会话类型的底层机制很模糊。但我相信该限制是通过 Linux 上的 pam_limits.so 强制执行的。

相关内容