在 CentOS 上开启 SFTP 日志,通常是通过配置 SSH(sshd) 的日志功能来实现的,因为 SFTP 是 SSH 子系统的一部分。下面按常见场景说明。
编辑 SSH 配置文件:
vi /etc/ssh/sshd_config
确认或添加以下内容:
Subsystem sftp internal-sftp -l INFO -f AUTH
说明:
-l INFO:日志级别(INFO / VERBOSE)-f AUTH:日志设施(通常写 AUTH 或 LOCAL0)如果你希望 记录每个文件的读写操作,可以用:
Subsystem sftp internal-sftp -l VERBOSE -f AUTH
编辑 rsyslog 配置:
vi /etc/rsyslog.conf
添加(如用 AUTH):
auth.* /var/log/sftp.log
或使用 LOCAL0:
local0.* /var/log/sftp.log
对应修改 sshd_config:
Subsystem sftp internal-sftp -l INFO -f LOCAL0
systemctl restart sshd
systemctl restart rsyslog
tail -f /var/log/sftp.log
示例日志:
Jun 10 10:00:01 server sftp[12345]: open "/home/user/test.txt" flags WRITE,CREATE,TRUNCATE mode 0644
适合 chroot SFTP 用户
Match Group sftpusers
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp -l VERBOSE -f LOCAL0
X11Forwarding no
AllowTcpForwarding no
rsyslog:
local0.* /var/log/sftp.log
sshd查看 SELinux:
getenforce
如为 Enforcing,可临时测试:
setenforce 0
-l INFO 而非 VERBOSE# 1. 修改 sshd_config
Subsystem sftp internal-sftp -l INFO -f LOCAL0
# 2. 修改 rsyslog
local0.* /var/log/sftp.log
# 3. 重启
systemctl restart sshd
systemctl restart rsyslog
# 4. 查看
tail -f /var/log/sftp.log
如果你愿意,我可以:
直接告诉我你的 CentOS 版本和使用场景即可。