温馨提示×

CentOS如何开启SFTP日志

小樊
32
2026-08-04 00:02:44
栏目: 智能运维

在 CentOS 上开启 SFTP 日志,通常是通过 OpenSSH 的 internal-sftp + Subsystem 配置 来实现的。下面按常见场景给你一份完整、可用的配置步骤(适用于 CentOS 7 / 8 / Stream)。


一、确认 OpenSSH 版本

ssh -V

确保使用的是 OpenSSH 4.8+(CentOS 基本都满足)。


二、修改 SSH 配置,开启 SFTP 日志

1️⃣ 编辑 SSH 配置文件

vim /etc/ssh/sshd_config

2️⃣ 修改或添加 Subsystem sftp

找到或添加这一行(不要再用 sftp-server):

Subsystem sftp internal-sftp

3️⃣ 为 SFTP 单独配置日志(推荐)

在文件末尾添加:

Match Group sftpusers
    ChrootDirectory /data/sftp/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    LogLevel INFO

✅ 如果你不想限制用户,也可以直接全局开启:

Subsystem sftp internal-sftp -l INFO

常用日志级别:

  • INFO ✅(推荐)
  • DEBUG
  • DEBUG1 / DEBUG2 / DEBUG3(排错用)

三、配置 rsyslog 接收 SFTP 日志

1️⃣ 编辑 rsyslog 配置

vim /etc/rsyslog.d/sftp.conf

添加:

:programname, isequal, "internal-sftp" /var/log/sftp.log
& stop

2️⃣ 重启 rsyslog

systemctl restart rsyslog

四、重启 SSH 服务

systemctl restart sshd

五、验证 SFTP 日志

1️⃣ 使用 SFTP 登录

sftp user@server_ip

2️⃣ 查看日志

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

六、常见问题排查

❌ 日志不显示

  1. 确认使用的是 internal-sftp
  2. 确认 LogLevel 不是 QUIET
  3. 确认 rsyslog 已重启
  4. 查看 /var/log/messages/var/log/secure

❌ SELinux 阻止

getenforce

如果是 Enforcing

setenforce 0   # 临时关闭(测试用)

七、推荐生产配置(总结)

最佳实践

  • 使用 internal-sftp
  • 使用 rsyslog 单独记录 SFTP 日志
  • 日志级别 INFO
  • 配合 ChrootDirectory 限制用户

如果你需要:

  • 只记录某个用户
  • 记录上传/下载文件
  • 使用 journalctl 而不是 rsyslog
  • CentOS 6 老版本

可以直接告诉我你的 CentOS 版本和使用场景,我可以给你定制配置。

0