如何在客户端计算机上记录通过SSH执行的所有命令?
假设我正在连接到example.com,并键入以下命令:
$ ls
$ touch hello
$ mkdir world
$ mv hello world/
我希望我的客户在这样的文件中输入所有命令:
ls
touch hello
mkdir world
mv hello world/
我的目标是,如果我犯了一个错误,并破坏了服务器,我仍然可以搜索哪个命令出错。我不能使用~/.bash_logout
在断开连接后保存命令,也不能使用~/.bash_history
保存命令,因为它是服务器端的。我没有发现任何与~/.ssh/config
相关的东西,所以我在这里问。
有什么想法吗?
编辑:
更清楚的是,如果我从机器A连接到机器B,我希望在机器A上有历史文件。
发布于 2018-07-11 10:12:26
在大多数情况下,这将已经在您的历史文件中,例如~/.bash_history
发布于 2018-07-11 11:07:38
您可以找到按历史记录或cat ~/..bash_ history键入的所有命令,或者即使您希望将该命令的输出重定向到一个文件,也可以编写cat ~/..bash_ history >您的文件名是您想要在该文件中保存历史记录的文件,或者如果您想查看从历史输入的最后n条命令,可以键入历史记录尾部-n,然后通过键入历史记录尾-n > your_file_name将它们重定向到一个文件中。
发布于 2018-07-12 01:36:30
这可以通过在/etc/bashrc
文件中添加以下行来完成
PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$]: $(history 1 | sed "s/^[ ][0-9]+[ ]//" ) [$RETRN_VAL]"'
您还必须在commands.conf
目录中创建一个文件/etc/rsyslog.d/
,文件的内容应该如下所示:
local6.* /var/log/commands.log
然后重新启动rsyslog
服务所有的日志都将在/var/log/commands.log
中捕获
https://serverfault.com/questions/920507
复制