如何记录“通过 SSH 进行远程执行”

如何记录“通过 SSH 进行远程执行”

如果用户通过 ssh 远程执行命令:

[user@remote ~] $ ssh USERNAME@SERVER COMMANDS

管理员如何SERVER记录COMMANDS在“非 tty”会话中执行的命令?

另外,当用户调用新的 shell( running /bin/bash from existing bash shell) 时,在这个新 shell 中执行的命令不会列在用户的 bash 历史记录中;如何记录这些命令?

答案1

只需安装GNU 会计acct适用于 Debian/Ubuntu 或psacctRedHat/CentOS)并使用该命令lastcomm来跟踪所有用户执行的所有命令。

答案2

SSH 曾经有一个名为“法西斯日志记录”的选项,这个选项似乎已经消失了 - 该选项可以进行按键记录。

现在,即使将 SSHD 的日志记录级别提升到 DEBUG3 也不会显示命令。

但也许你的第二个问题的答案也能解决第一个问题。bash 历史记录附加机制已在接受的答案中进行了描述问题

答案3

您可以使用 SSHLog 记录这些命令https://github.com/sshlog/agent/(我是一名贡献者)。

该应用程序将捕获所有命令(包括您在问题中引用的通过 bash 的管道)。它还将记录通过 TTY 输入的命令和未通过 TTY 发送的命令。以下是用户通过 ssh 进入服务器并运行的示例:

bash
whoami
exit

日志文件将显示:

2023-04-18 16:47:59 command_start          (2554513) jdoe executed /usr/bin/bash
2023-04-18 16:48:00 command_start          (2554513) jdoe executed /usr/bin/whoami
2023-04-18 16:48:00 command_finish         (2554513) jdoe execute complete (exit code: 0) /usr/bin/whoami
2023-04-18 16:48:10 command_finish         (2554513) jdoe execute complete (exit code: 0) /usr/bin/bash

注意 bash 终端打开了,“whoami”在新终端内运行,当 bash 最终关闭时,它会报告命令的完成。

相关内容