我似乎无法让 SCP 日志(在服务器上)显示在任何地方。我搜索了不少页面,包括:
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,启用了所有级别的日志记录,包括DEBUG3
,/etc/ssh/sshd_config
并尝试了普通用户和 root 用户,但没有找到有关传输的文件的信息(甚至那已传输文件)将显示在任何日志中SCP
。即使没有启动SFTP
,日志也会显示在 auth.log 中。LogLevel
VERBOSE
我是否遗漏了什么?有人能确认他们能够让 SCP 日志显示在某处吗?
谢谢
答案1
scp
就像命令一样在内部执行,ssh
并且不会记录传输的文件。您只能在 /var/log/auth.log 或类似位置记录身份验证日志。
答案2
当我必须想出一种方法来监控 SCP 传输时,我研究过这一点。OpenSSHscp
实用程序不记录任何内容。它支持底层 SSH 会话的调试输出,但不会记录正在进行的实际文件传输。
类似地,可以将 OpenSSH 服务器设置为记录其正在执行的操作的详细信息,也可以将其设置为记录用户连接和运行的事实scp
,但它不会记录正在进行的实际文件传输。
如果您无法让这些用户改用 SFTP,则可以使用以下三种方法:
调查商业 SSH/SFTP/SCP 服务器。它们通常应该支持记录文件传输。
scp
将服务器上的实用程序替换为记录所需数据的实用程序。OpenSSH 是开源的。知道如何使用 C 语言为 Unix 编程的人可以下载源代码并进行修改。用“包装器”替换该
scp
实用程序,该包装器启动原始 scp 程序并监视其操作。Unix 有调试工具可以监视另一个进程正在做什么。
我们采用了第三种方法。我们编写了一个 Perl 脚本,在斯特拉斯。strace 将输出 scp 进程打开和关闭的文件的名称。Perl 脚本读取 strace 输出并将其转换为日志条目。