持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
SSH文件传输协议(英语:SSH File Transfer Protocol,也称Secret File Transfer Protocol,中文:安全文件传送协议,英文:Secure FTP或字母缩写:SFTP)是一数据流连线,提供文件访问、传输和管理功能的网络传输协议。由互联网工程任务组(IETF)设计,透过SSH 2.0 的扩展提供安全文件传输能力,但也能够被其他协议使用。即使IETF在网络草案资料阶段时,这个协议是在SSH-2文件中描述,它能够使用在许多不同的应用程序,例如安全文件传输在传输层安全(TLS)和传输信息管理于虚拟专用网应用程序。这个协议是假设执行在安全信道,例如SSH,服务器已经认证客户端,并且客户端用户可利用协议。
如果想记录sftp的一些操作记录(ls、get、put等)可以尝试以下两种方式
\
1、仅记录文件
如果你只想看到sftp的一些操作日志,那么默认配置就可以完全满足我们的要求,操作起来也非常简单,只需要在sshd的默认配置(/etc/ssh/sshd_config)中修改对应的配置即可,在最后面添加一行命令行参数来允许日志记录:Subsystem sftp/etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server -l VERBOSE
重新启动sshd服务,并执行 sftp 的一些简单操作,就可以在/var/log/messages:中出现下面这些日志
service sshd restart
Mar 9 09:39:07 localhost sftp-server[1829]: received client version 3
Mar 9 09:39:07 localhost sftp-server[1829]: realpath "."
Mar 9 09:39:09 localhost sftp-server[1829]: lstat name "/root"
2、记录到具体文件
如果想日志记录到指定文件,则需要将rsyslog的消息引导到另一个文件中,可以使用-f 的参数,同上只需要在上面的文件修改成如下所示:
vi /etc/ssh/sshd_config:
Subsystem sftp /usr/libexec/openssh/sftp-server -l VERBOSE -f LOCAL3
并且修改 /etc/rsyslog.conf
并在/etc/rsyslog.conf:
local3.* /var/log/sftp.log
修改完成后重启sshd 和 rsyslog后,就可以在/var/log/sftp.log 看到如下日志了
service rsyslog restart
service sshd restart
Mar 9 09:49:02 localhost sftp-server[1947]: received client version 3
Mar 9 09:49:02 localhost sftp-server[1947]: realpath "."
Mar 9 09:49:04 localhost sftp-server[1947]: lstat name "/root"
另外,如果你只想记录一些特定的信息,同样的也只用修改配置文件即可,编辑/etc/rsyslog.conf
..snip..
local3.* /var/log/sftp.log
&~
*.info;mail.none;authpriv.none;cron.none /var/log/messages
..snip..
\
然后重新启动 rsyslog 服务。
service rsyslog restart
消息现在被记录到/var/log/sftp.log并且由于存在“&~”,它们将仅限于/var/log/sftp.log。
参数说明:
-l :level
QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3
此日志顺序是按照日志详细顺序由少到多的顺序排列,可以通过自己的需求来进行操作和修改,一般常用的为INFO和VERBOSE
INFO : 它提供有关文件传输、权限更改等的详细信息
VERBOSE :任何内容都可能比您要查找的信息更多
-f :log_facility
文件\