温馨提示×

CentOS SFTP如何启用日志

小樊
43
2026-08-30 01:18:53
栏目: 智能运维

在 CentOS 上启用 SFTP 日志,通常是通过 OpenSSH 的 internal-sftp 来实现的。下面按 推荐做法 → 排错要点 给你一个完整说明(适用于 CentOS 7/8/Stream)。


一、启用 SFTP 日志(推荐方式)

1️⃣ 修改 SSH 配置

编辑配置文件:

vi /etc/ssh/sshd_config

找到或添加以下内容(不要直接改掉整段,只改对应部分):

# 覆盖原来的 sftp 配置
Subsystem sftp internal-sftp -l INFO -f AUTH

或者更详细一点(推荐):

Subsystem sftp internal-sftp -l VERBOSE -f AUTH

参数说明:

  • -l:日志级别
    • INFO:基本操作(推荐)
    • VERBOSE:包含上传 / 下载 / 删除
  • -f:日志设施(facility)

2️⃣ 为 SFTP 用户单独配置日志(重要)

sshd_config 末尾添加:

Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp -l VERBOSE -f AUTH
    AllowTcpForwarding no
    X11Forwarding no

如果你没有使用 Chroot,可省略 ChrootDirectory


3️⃣ 确认 rsyslog 能接收 AUTH 日志

编辑 rsyslog 配置:

vi /etc/rsyslog.conf

确保没有注释掉这一行:

authpriv.*    /var/log/secure

然后重启 rsyslog:

systemctl restart rsyslog

4️⃣ 重启 SSH 服务

systemctl restart sshd

二、查看 SFTP 日志

SFTP 日志默认在:

/var/log/secure

示例查看:

tail -f /var/log/secure

或搜索 SFTP 行为:

grep internal-sftp /var/log/secure

三、日志示例(你将会看到)

Dec 19 10:21:03 centos internal-sftp[12345]: open "/data/test.txt" flags WRITE,CREATE,TRUNCATE
Dec 19 10:21:04 centos internal-sftp[12345]: close "/data/test.txt"
Dec 19 10:21:10 centos internal-sftp[12345]: remove "/data/test.txt"

四、常见问题排查

❌ 看不到日志?

检查以下几点:

  1. 是否使用 internal-sftp

    grep Subsystem /etc/ssh/sshd_config
    

    必须是:

    Subsystem sftp internal-sftp
    
  2. 是否使用 Chroot

    • Chroot 目录 必须是 root 拥有
    chown root:root /data/sftp
    chmod 755 /data/sftp
    
  3. SELinux 是否拦截

    getenforce
    

    临时关闭测试:

    setenforce 0
    

五、进阶(可选)

✅ 把 SFTP 日志单独写到文件

# rsyslog 规则
:programname, isequal, "internal-sftp"    /var/log/sftp.log
& stop

然后:

systemctl restart rsyslog

六、总结(最简配置)

Subsystem sftp internal-sftp -l INFO -f AUTH
systemctl restart sshd
tail -f /var/log/secure

如果你愿意,可以告诉我:

  • CentOS 版本
  • 是否使用 Chroot
  • 是否要 记录上传/下载内容

我可以帮你定制一套最合适你的 SFTP 审计方案 ✅

0