列出以前通过 sftp 的登录

列出以前通过 sftp 的登录

stackexchange 的人们大家好,

我在尝试查找特定日志文件的位置时遇到了一些困难,我希望这里有人可以帮助我。

我想做的是列出 sftp 服务器上特定用户的登录日期/时间。通过在线研究,我到目前为止已经找到了

cat /var/log/auth.log | grep "username" 其中列出了一些登录信息,但没有我要查找的那么远。

我也尝试过

last -n 1000 | grep "username" 但不幸的是,这似乎只适用于 ssh 访问服务器而不是 sftp (据我所知)

任何人都可以想到列出 sftp 用户的特定用户的登录的任何其他方法吗?

提前非常感谢,黑暗。注意,如果有任何帮助,用户将被chroot到他们自己的主目录。

编辑: 我一开始没有注意到一些存档文件,这些文件给了我最多一个月的登录时间,这更好。新问题:默认情况下,CentOs 保留存档的身份验证日志多长时间?如果超过一个月,较旧的档案将移至何处?我已经检查了 logrotate.conf 并且没有提及,/var/log/auth.log所以我假设它使用默认值。

编辑:编辑 我想我可能已经找到了我正在寻找的答案,但无论如何发布此内容以防万一对其他人有用。

logrotate 脚本是/etc/logrotate.d/rsyslog.默认情况下,这些日志每周轮换一次并存储最多 4 周的日志。

我还没有声誉将此作为答案,但如果管理员看到此内容,请随时关闭它。

最美好的祝愿~黑暗

答案1

在 CentOS 6 上,/var/log/secure包含 sshd 的输出,该输出启动 sftp 子服务器。默认情况下,您将看到类似于以下内容的消息,但仅此而已:

Feb 25 12:34:56 server sshd[1234]: Accepted password for user from 1.2.3.4 port 12345 ssh2
Feb 25 12:34:56 server sshd[1234]: pam_unix(sshd:session): session opened for user user by (uid=0)
Feb 25 12:34:57 server sshd[1234]: subsystem request for sftp

如果您想更清楚地了解 sftp 操作(例如已传输的文件),请修改以下行/etc/ssh/sshd_config

Subsystem       sftp    /usr/libexec/openssh/sftp-server

成为

Subsystem       sftp    /usr/libexec/openssh/sftp-server -f AUTHPRIV -l INFO

然后重新启动 sshd:

# service sshd restart

然后您将拥有默认日志以及如下所示的日志:

Feb 25 12:34:56 server sftp-server[1234]: session opened for local user user from 1.2.3.4
Feb 25 12:34:56 server sftp-server[1234]: opendir "/home/user/"
Feb 25 12:34:56 server sftp-server[1234]: closedir "/home/user/"
Feb 25 12:34:56 server sftp-server[1234]: open "/home/user/test" flags READ mode 0666
Feb 25 12:34:56 server sftp-server[1234]: close "/home/user/test" bytes read 1234 written 0
Feb 25 12:34:56 server sftp-server[1234]: session closed for local user user from 1.2.3.4

相关内容