首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在客户端上记录ssh命令

在客户端上记录ssh命令
EN

Server Fault用户
提问于 2018-07-11 16:37:47
回答 3查看 473关注 0票数 0

如何在客户端计算机上记录通过SSH执行的所有命令?

假设我正在连接到example.com,并键入以下命令:

代码语言:javascript
代码运行次数:0
运行
复制
$ ls
$ touch hello
$ mkdir world
$ mv hello world/

我希望我的客户在这样的文件中输入所有命令:

代码语言:javascript
代码运行次数:0
运行
复制
ls
touch hello
mkdir world
mv hello world/

我的目标是,如果我犯了一个错误,并破坏了服务器,我仍然可以搜索哪个命令出错。我不能使用~/.bash_logout在断开连接后保存命令,也不能使用~/.bash_history保存命令,因为它是服务器端的。我没有发现任何与~/.ssh/config相关的东西,所以我在这里问。

有什么想法吗?

编辑:

更清楚的是,如果我从机器A连接到机器B,我希望在机器A上有历史文件。

EN

回答 3

Server Fault用户

发布于 2018-07-11 18:12:26

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

票数 0
EN

Server Fault用户

发布于 2018-07-11 19:07:38

您可以找到按历史记录或cat ~/..bash_ history键入的所有命令,或者即使您希望将该命令的输出重定向到一个文件,也可以编写cat ~/..bash_ history >您的文件名是您想要在该文件中保存历史记录的文件,或者如果您想查看从历史输入的最后n条命令,可以键入历史记录尾部-n,然后通过键入历史记录尾-n > your_file_name将它们重定向到一个文件中。

票数 0
EN

Server Fault用户

发布于 2018-07-12 09:36:30

这可以通过在/etc/bashrc文件中添加以下行来完成

代码语言:javascript
代码运行次数:0
运行
复制
PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$]: $(history 1 | sed "s/^[ ][0-9]+[ ]//" ) [$RETRN_VAL]"'

您还必须在commands.conf目录中创建一个文件/etc/rsyslog.d/,文件的内容应该如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
local6.*    /var/log/commands.log

然后重新启动rsyslog服务所有的日志都将在/var/log/commands.log中捕获

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/920507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档