在客户端上记录 ssh 命令

在客户端上记录 ssh 命令

如何在客户端机器上记录通过 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 上拥有历史文件。

答案1

大多数情况下,这已经存在于你的历史文件中,例如~/.bash_history

答案2

您可以通过 history 或 cat ~/.bash_history 查找您输入的所有命令,或者如果您希望将该命令的输出重定向到文件,您可以输入 cat ~/.bash_history > 您的文件名,您的文件名是您想要在该文件中保存历史记录的文件,或者如果您想从历史记录中查看最后输入的 n 条命令,您可以输入 history | tail -n,并且您可以通过输入 history | tail -n > your_file_name 将它们重定向到文件

答案3

可以通过在/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

相关内容