自从从 CentOS 7 升级到 Rocky Linux 8 后,我们的 PAMmaxlogins
限制不再对 SFTP 会话强制执行。
SFTP 用户属于该sftp
组,我们在/etc/security/limits.d/10-maxlogins.conf
@sftp - maxlogins 1
我们用于internal-sftp
SFTP 会话,并且/etc/ssh/sshd_config
Subsystem sftp internal-sftp -l INFO
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
但是,用户仍然能够同时打开 1 个以上的 SFTP 会话。我们是否应该在 EL8 中采取一些不同的措施来强制执行这些限制?
更新:
已启用 PAM 调试日志,可以看到它正在读取相关的配置文件。但是,该限制并未强制执行。
Apr 10 16:13:04 sftp-test sshd[40955]: Accepted password for sftptest from 10.3.200.146 port 60976 ssh2
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/10-max-logins.conf'
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): checking if sftptest is in group sftp
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): process_limit: processing - maxlogins 1 for GROUP
Apr 10 16:13:04 sftp-test sshd[40955]: pam_limits(sshd:session): checking logins for 'sftptest' (maximum of 1)
Apr 10 16:13:04 sftp-test systemd[40960]: pam_unix(systemd-user:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
Apr 10 16:13:04 sftp-test sshd[40955]: pam_unix(sshd:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
Apr 10 16:13:26 sftp-test sshd[40986]: Accepted password for sftptest from 10.3.200.146 port 52110 ssh2
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): reading settings from '/etc/security/limits.conf'
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): reading settings from '/etc/security/limits.d/10-max-logins.conf'
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): checking if sftptest is in group sftp
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): process_limit: processing - maxlogins 1 for GROUP
Apr 10 16:13:26 sftp-test sshd[40986]: pam_limits(sshd:session): checking logins for 'sftptest' (maximum of 1)
Apr 10 16:13:26 sftp-test sshd[40986]: pam_unix(sshd:session): session opened for user sftptest(uid=1000) by sftptest(uid=0)
虽然我在论坛上回答过这个问题,但我还是会在这里回答,因为这个问题并非 Rocky Linux 独有的。它适用于所有 Enterprise Linux 8 和 9 版本(也可能是 10)。
maxlogins
您应该设置,而不是设置nproc
。这只是绕过设计的一个技巧SFTP
。要计算这一点,请使用以下公式
2 * X + 2
:SFTP
连接2 个进程1
)+ 2
systemd 用户管理器最终为2
每个用户消耗进程。这很容易验证。下面我已经登录到我的机器了。
我们尝试再次登录。
使用 sftp,它将会挂起直到最终放弃。
如果我在它挂起时注销,它最终会给我一个提示。