我想知道是否有一种方法来记录服务器接收的命令。只要包含有关文件传输的命令信息,它就可以是所有SSH命令。
我在SFTP客户端上遇到问题,创建者正在询问日志,但是我找不到任何现有的日志。
我正在寻找同时登录CentOS或OS X的系统(尽管我怀疑是否有可能,但两者都类似)。
我想知道是否有一种方法来记录服务器接收的命令。只要包含有关文件传输的命令信息,它就可以是所有SSH命令。
我在SFTP客户端上遇到问题,创建者正在询问日志,但是我找不到任何现有的日志。
我正在寻找同时登录CentOS或OS X的系统(尽管我怀疑是否有可能,但两者都类似)。
Answers:
OpenSSH版本4.4p1及更高版本(应包括CentOS 5的最新版本)具有内置的SFTP日志记录功能-您只需对其进行配置。
在您的sshd_config中找到此文件(在centos中,文件/ etc / ssh / sshd_config):
Subsystem sftp /usr/libexec/openssh/sftp-server
并将其更改为:
Subsystem sftp /usr/libexec/openssh/sftp-server -l INFO
INFO只是默认情况下的详细信息之一,它提供有关文件传输,权限更改等的详细信息。如果您需要更多信息,则可以相应地调整日志级别。各个级别(按详细顺序)是:
QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3
VERBOSE上的所有内容可能都比您想要的要多,但它可能很有用。
最后,重新启动SSH服务以更新更改(中心):
systemctl restart sshd
/var/log/auth.log
。添加-f USER
到该Subsystem
配置行以将其发送到/var/log/syslog
。
围绕sftp-server的日志记录的相同开关也适用于internal-sftp。这是我的/ etc / ssh / sshd_config中的一个示例:
Subsystem sftp internal-sftp -f AUTH -l INFO
启用INFO级别的日志记录后,消息将开始显示在/ var / log / messages下(至少在基于Red Hat的发行版下):
May 27 05:58:16 test-server sshd[20044]: User child is on pid 20049
May 27 05:58:16 test-server sshd[20049]: subsystem request for sftp by user test-user
May 27 05:58:16 test-server internal-sftp[20050]: session opened for local user test-user from [192.168.1.1]
May 27 05:58:16 test-server internal-sftp[20050]: received client version 3
May 27 05:58:16 test-server internal-sftp[20050]: realpath "."
May 27 05:58:21 test-server internal-sftp[20050]: opendir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: closedir "/home/test-user/"
May 27 05:58:21 test-server internal-sftp[20050]: lstat name "/home/test-user/upload"
May 27 05:58:21 test-server internal-sftp[20050]: realpath "/home/test-user/upload/"
May 27 05:58:21 test-server internal-sftp[20050]: stat name "/home/test-user/upload"
May 27 05:58:24 test-server internal-sftp[20050]: open "/home/test-user/upload/test-file.pdf" flags WRITE,CREATE,TRUNCATE mode 0664
May 27 05:58:25 test-server internal-sftp[20050]: close "/home/test-user/upload/test-file.pdf" bytes read 0 written 1282941
/dev/log
在chroot区域中需要。喜欢的东西sudo mkdir /chrooted/area/dev
,sudo touch /chrooted/area/dev/log
,sudo chmod 511 /chrooted/area/dev
,sudo chattr +i /chrooted/area/dev
,sudo mount --bind /dev/log /chrooted/area/dev/log
。用户仍然可以对该/ dev / log进行写访问,但是由于它是一个套接字,因此只要访问权限为,就不会造成太大的伤害sftp
。
为了澄清以上评论:
如果使用监狱(chroot环境)配置了sftp,则在没有其他配置努力的情况下无法登录。无法在chroot环境中写入日志,您需要创建安装绑定或套接字。我建议您使用套接字,因为它是syslog-ng和rsyslog(也许还有更多)提供的功能。
对于使用syslog-ng的用户,请查看https://wiki.archlinux.org/index.php/SFTP_chroot#Logging。对于使用rsyslog的用户,https://wiki.kairaven.de/open/os/linux/sftpssh 是您的朋友。
希望能有所帮助。