在 CentOS 上开启 SFTP 日志,通常是通过 OpenSSH 的 internal-sftp + Subsystem 配置 来实现的。下面按常见场景给你一份完整、可用的配置步骤(适用于 CentOS 7 / 8 / Stream)。
ssh -V
确保使用的是 OpenSSH 4.8+(CentOS 基本都满足)。
vim /etc/ssh/sshd_config
Subsystem sftp找到或添加这一行(不要再用 sftp-server):
Subsystem sftp internal-sftp
在文件末尾添加:
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
LogLevel INFO
✅ 如果你不想限制用户,也可以直接全局开启:
Subsystem sftp internal-sftp -l INFO
常用日志级别:
INFO ✅(推荐)DEBUGDEBUG1 / DEBUG2 / DEBUG3(排错用)vim /etc/rsyslog.d/sftp.conf
添加:
:programname, isequal, "internal-sftp" /var/log/sftp.log
& stop
systemctl restart rsyslog
systemctl restart sshd
sftp user@server_ip
tail -f /var/log/sftp.log
示例日志:
Aug 20 10:01:23 server internal-sftp[12345]: open "/upload/test.txt" flags WRITE,CREATE,TRUNCATE
Aug 20 10:01:24 server internal-sftp[12345]: close "/upload/test.txt" bytes read 0 written 1024
internal-sftpLogLevel 不是 QUIET/var/log/messages 或 /var/log/securegetenforce
如果是 Enforcing:
setenforce 0 # 临时关闭(测试用)
✅ 最佳实践
internal-sftprsyslog 单独记录 SFTP 日志INFOChrootDirectory 限制用户如果你需要:
可以直接告诉我你的 CentOS 版本和使用场景,我可以给你定制配置。