温馨提示×

linux sftp如何开启日志

小樊
38
2026-09-23 07:13:18
栏目: 智能运维

在 Linux 上开启 SFTP 日志,通常是通过 SSH 服务(sshd) 来配置的,因为 SFTP 是基于 SSH 的。下面按常见场景说明。


一、最常用方式(推荐):开启 sshd 详细日志

1. 修改 sshd 配置文件

编辑:

/etc/ssh/sshd_config

确保或添加以下内容:

Subsystem sftp internal-sftp -l INFO

或者(如果你使用的是 sftp-server):

Subsystem sftp /usr/lib/openssh/sftp-server -l INFO

日志级别可选:

  • INFO(基本)
  • VERBOSE(推荐,能看到文件操作)
  • DEBUG(非常详细,不建议长期开)

示例(推荐):

Subsystem sftp internal-sftp -l VERBOSE

2. 修改 sshd 日志级别

在同一文件中:

LogLevel VERBOSE

3. 重启 sshd

systemctl restart sshd

service ssh restart

二、查看 SFTP 日志位置

常见日志文件

/var/log/auth.log        # Debian / Ubuntu
/var/log/secure          # CentOS / RHEL / Rocky

查看示例:

tail -f /var/log/auth.log

你会看到类似:

session opened for user xxx
open "/home/xxx/test.txt" flags READ
close "/home/xxx/test.txt"

三、为 SFTP 单独记录日志(高级)

如果你希望 SFTP 日志单独存文件,可以使用 ForceCommand + Match

示例:单独用户组

Match Group sftpusers
    ChrootDirectory /sftp
    ForceCommand internal-sftp -l VERBOSE -f AUTH

然后在 rsyslog 中过滤:

vim /etc/rsyslog.d/sftp.conf
:programname, contains, "internal-sftp" /var/log/sftp.log
& stop

重启:

systemctl restart rsyslog

四、常见问题

1. 日志看不到文件操作?

  • 没加 -l VERBOSE
  • 用的是 sftp-server 而不是 internal-sftp

2. Chroot 环境下没日志?

  • Chroot 后无法写系统日志
  • 必须用 internal-sftp

五、最小可用配置示例

LogLevel VERBOSE

Subsystem sftp internal-sftp -l VERBOSE

如果你能告诉我:

  • Linux 发行版(CentOS / Ubuntu / Debian)
  • 是否使用 Chroot
  • 是否要审计“谁删了什么文件”

我可以给你更精准的配置。

0