我们最近将运行的大容量 CentOS 7 SFTP 服务器升级openssh/internal-sftp
到 Rocky Linux 8。
然而,升级后,服务器运行1-2小时后,我们遇到了登录超时的问题。这似乎与打开的SFTP会话和/或systemd --user
进程数量有关。
1-2 小时后,新的 SFTP 登录变得非常慢,我们开始在日志中看到这些消息
Apr 14 12:16:58 sftp sshd[330585]: pam_systemd(sshd:session): Failed to create session: Connection timed out
有时,如果足够多的 SFTP 会话关闭得足够快,问题就会解决,但更多时候我们必须重新启动服务器才能恢复正常服务。
是否建议禁用它systemd-logind
,因为 SSH 似乎不需要它?
更新
不确定这是否相关,但systemctl list-units --state=abandoned
返回了 100 个被放弃的会话。
更新 2
禁用后pam_systemd.so
系统恢复正常运行。这实际上禁用了systemd-logind
SSH 会话。
系统负载减少 80% 表明使用时性能会受到巨大损失systemd-logind
。
这正常吗?!
我首先会使用 systemctl mask
[email protected]
,因为 SFTP 肯定不需要它。这会阻止systemd --user
SFTP 启动,同时保持 systemd-logind 的正常运行,我怀疑这可能是造成性能问题的主要原因。对于仅支持 SFTP 的服务器,完全禁用
pam_systemd
是最佳选择。最大的缺点是,所有“会话”进程仍将保留在 sshd.service cgroup 中,而不是移动到单独的用户/会话 cgroup,这意味着重新启动 sshd 可能会终止所有会话,包括管理员 SSH shell。(应该不会,因为 sshd.service 有 KillMode=process 选项,但我不知道您是否可以依赖它。)因此,如果可能的话,我不会完全删除它,而是添加一个
pam_succeed_if
仅为 SFTP 客户端跳过 pam_systemd 模块,但为 root 和其他系统管理员会话保留它(例如检查“sftpusers”的成员,或不是“wheel”或“sudoers”的成员)