在 Linux 上开启 SFTP 日志,通常是通过 SSH 服务(sshd) 来配置的,因为 SFTP 是基于 SSH 的。下面按常见场景说明。
编辑:
/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
在同一文件中:
LogLevel VERBOSE
systemctl restart sshd
或
service ssh restart
/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 日志单独存文件,可以使用 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
-l VERBOSEsftp-server 而不是 internal-sftpinternal-sftpLogLevel VERBOSE
Subsystem sftp internal-sftp -l VERBOSE
如果你能告诉我:
我可以给你更精准的配置。