![scp:保留事务日志?](https://linux22.com/image/106532/scp%EF%BC%9A%E4%BF%9D%E7%95%99%E4%BA%8B%E5%8A%A1%E6%97%A5%E5%BF%97%EF%BC%9F.png)
假设您有scp
一个文件到远程服务器。
scp /file root@<ip>:/file
在远程服务器上 SCP 看到一个名为/file
即被归类为“传入”
可以将此信息回显到文件中吗
echo "incoming:/file" >> /scp_logs
?
更新:
或者也许......可以scp
配置为在将文件传输到远程服务器之后(在与服务器断开连接之前)运行命令?
这样我就可以附加
echo "incoming:/file" >> /scp_logs
传输文件时使用它。
答案1
不,又是。使用某些远程命令(也)发出正常会话,scp
但它是硬编码在二进制文件中的。因此,可以修改客户端二进制文件以发送您的命令。ssh
scp
echo
或者使用脚本在服务器上强制执行此策略ForceCommand
,该脚本将检查SSH_ORIGINAL_COMMAND
环境变量,并且在 的情况下scp
,它将把参数存储在日志中。
但是,当您执行 scp 命令(例如 )时,这并不能解决问题scp file1 file2 server:/path/
,因为服务器只会看到远程路径。为了获得文件实际上传的真实路径,您需要修改scp
服务器上的二进制文件来为您进行日志记录(在open()
称呼)。
因此,如果您正在寻找某种可审核文件上传的方法,scp
这不是一个可行的方法。使用 会更好sftp
,它会立即记录所有命令(一旦启用LogLevel VERBOSE
)。