温馨提示×

怎样开启centos sftp日志

小樊
45
2026-09-24 06:23:13
栏目: 智能运维

在 CentOS 上开启 SFTP 日志,通常是通过配置 SSH(sshd) 的日志功能来实现的,因为 SFTP 是 SSH 子系统的一部分。下面按常见场景说明。


一、最简单方式:开启 sshd 日志(推荐)

1. 修改 sshd 配置

编辑 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

2. 配置 syslog / rsyslog

编辑 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

3. 重启服务

systemctl restart sshd
systemctl restart rsyslog

4. 查看日志

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

二、为不同用户单独记录 SFTP 日志(进阶)

适合 chroot SFTP 用户

sshd_config 示例

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

rsyslog:

local0.* /var/log/sftp.log

三、常见排查问题

1. 没有日志?

  • 是否重启了 sshd
  • 日志设施是否和 rsyslog 匹配
  • SELinux 是否阻止(CentOS 默认开启)

查看 SELinux:

getenforce

如为 Enforcing,可临时测试:

setenforce 0

2. 日志太多?

  • 使用 -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 7 / 8 / Stream 专用配置
  • 或帮你配置 仅记录上传/下载
  • 或结合 auditd 做更严格审计

直接告诉我你的 CentOS 版本和使用场景即可。

0 踩