你可以在哪里找到SCP日志?

我似乎无法在任何地方找到SCP日志(在服务器上)。我已经搜索了很多页面,包括: ssh服务器上的scp / ssh日志

http://ubuntuforums.org/showthread.php?t=1789437

http://ubuntuforums.org/showthread.php?t=851891

我在10.04(是的,EOL等等)上尝试了OpenSSH 5.3和12.04上的OpenSSH 5.9,我在/etc/ssh/sshd_config中启用了所有级别的日志记录,包括DEBUG3,并尝试了普通用户和root用户,但是关于传输的文件(甚至是有文件被传输)的任何日志都没有显示在SCP的任何日志中。即使不将LogLevel调高到VERBOSE,SFTP日志也会显示在auth.log中。
我是否遗漏了什么?有人能确认他们能够在某个地方看到SCP日志吗?
谢谢
2个回答

scp 是在内部执行的,就像 ssh 命令一样,并且传输的文件不会被记录。您只能在 /var/log/auth.log 或类似位置找到身份验证日志。


1这个回答被投票为零,而且不仅百分之百正确,它还是最简单的答案。 - Scott Prive
@ScottPrive 我认为被投票否定的原因是因为简单地说“没有日志”对于那些在疯狂搜索记录此类流量的方法时偶然发现这个答案的人来说并不真正有用。 - CoolKoon

我曾经在需要监控SCP传输的时候研究过这个问题。OpenSSH的scp工具不会记录任何日志。它支持底层SSH会话的调试输出,但这不会记录实际正在进行的文件传输。

同样地,OpenSSH服务器可以设置为记录其操作的详细信息,并且可以设置为记录用户连接和运行scp的事实,但它不会记录实际正在进行的文件传输。

如果无法让这些用户使用SFTP,您有三种方法可供选择:

  1. 调查商业SSH/SFTP/SCP服务器。它们通常应该支持记录文件传输。

  2. 用一个记录所需数据的程序替换服务器上的scp工具。OpenSSH是开源的。懂得在Unix系统中用C编程的人可以下载源代码并进行修改。

  3. 用一个“包装器”替换scp工具,该包装器启动原始的scp程序并监视其操作。Unix系统中有一些调试工具可以监视另一个进程的操作。

我们采用了第三种方法。我们编写了一个Perl脚本,在strace下启动了原始的scp程序。Strace会输出scp进程打开和关闭的文件名。Perl脚本读取strace输出并将其转换为日志条目。

"incron"会是第4个选项,可能比你的第3个更容易 ;) - Rinzwind
@Rinzwind 我看不到限制incron仅在特定程序(如scp)触发事件的方法,也无法告知是哪个进程触发了事件。 - Kenster
如果1和3的位置颠倒了,我本来会点赞的... - Fabby