Linux ssh 客户端记录所有命令

Linux ssh 客户端记录所有命令

我将设置一个 Linux 控制台框,以便仅从该 Linux 机器通过 ssh 登录 Cisco 设备。如何在 Linux 上设置 ssh 客户端来记录应用于 Cisco 设备的所有命令?

答案1

您可以使用该script命令记录所有的终端输出,正常情况下包括所有输入的命令。

如果要附加到单个文件,调用可能看起来像这样:

script -a -f -c 'ssh cisco.example.com' /var/local/log/ssh-cisco.log

或者如果您希望每次调用都使用单独的文件,请这样做:

script -f -c 'ssh cisco.example.com' "/var/local/log/ssh-cisco-$(date date +%Y-%m-%d_%H:%M:%S.%N).$$.log"

如果要求用户自己输入这些命令,他们当然会懒得进行额外输入以启用日志记录。而且,将整个过程写在 shell 脚本中可能也不够好,因为我假设您不希望用户能够绕过日志记录。

因此,您要避免用户有权绕过日志记录,并且也不希望他们对包含日志的目录具有写权限。

您可以设置一个单独的组,该组具有对 ssh 密钥的读取权限和对日志目录的写入权限。然后,您可以将命令包装script在 set-group-id 可执行文件或 中sudo

答案2

我找到了一个解决方案,即“| tee -a logfile”。还有其他解决方案吗?如果可能的话,我只需要日志文件中的命令,而不是所有输出。

答案3

如果我错了,请纠正我,但据我所知,即使是 CISCO 设备也有一个 .bash_history 文件。当您登录时,所有命令都按时间顺序保存在那里。因此,我认为要求 SSH 客户端保存您输入的每个命令毫无用处。

相关内容