我在 /etc/security/limits.conf 中进行了更改
test hard maxlogins 2
sftptest hard maxlogins 2
在上面的条目之后我测试了以下场景
- 当我尝试打开第 3 个会话时,打开 2 个 putty 会话,它会自动断开连接(与 ssh 用户正常工作,不适用于 sftp 用户)
- 当我尝试从 filezilla / winscp 连接自动断开连接打开第 3 个会话时,打开 2 个 putty 会话(与 ssh 用户正常工作) 3.当我尝试在 filezilla/winscp 中打开 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 强制执行的。