我想知道是否有办法记录服务器收到的命令。它可以是所有 SSH 命令,只要它包含与文件传输相关的命令信息即可。
我在使用 SFTP 客户端时遇到问题,创建者要求提供日志,但我找不到任何现有日志。
我希望同时登录 CentOS 或 OS X(尽管我怀疑是否可能,两者都相似)。
我想知道是否有办法记录服务器收到的命令。它可以是所有 SSH 命令,只要它包含与文件传输相关的命令信息即可。
我在使用 SFTP 客户端时遇到问题,创建者要求提供日志,但我找不到任何现有日志。
我希望同时登录 CentOS 或 OS X(尽管我怀疑是否可能,两者都相似)。
OpenSSH 4.4p1 及更高版本(应包括 CentOS 5 的最新版本)内置了 SFTP 日志记录功能 - 您只需对其进行配置。
在您的 sshd_config 中找到它(在 centos 中,文件/etc/ssh/sshd_config):
并将其更改为:
INFO 只是您在默认情况下看到的详细信息的一个级别 - 它提供有关文件传输、权限更改等的详细信息。如果您需要更多信息,您可以相应地调整日志级别。各个级别(按详细顺序)是:
VERBOSE 上的任何内容都可能比您要查找的信息更多,但它可能很有用。
最后重启 SSH 服务以更新更改(centos):
围绕 sftp-server 的日志记录的相同开关也适用于 internal-sftp。这是我的 /etc/ssh/sshd_config 中的一个示例:
启用 INFO 级别的日志记录后,消息将开始显示在 /var/log/messages 下(至少在基于 Red Hat 的发行版下):
为了澄清上述评论:
如果您使用 jail(chroot 环境)配置了 sftp,则如果没有额外的配置工作,您将无法登录。chroot环境下无法写入日志,需要创建mount bind或者socket。我建议使用套接字,因为它是 syslog-ng 和 rsyslog(可能还有更多)提供的功能。
对于使用 syslog-ng 的用户,请查看此链接。对于那些使用 rsyslog 的人;希望有帮助。