记录通过ssh执行的命令


8

我想记录所有通过SSH执行的命令。

说,

ssh something@server.com COMMAND

我想在server.com上登录“ COMMAND”

我进行了广泛搜索,但找不到任何东西。

还有一个类似的问题,但我认为那边没有解决方案。

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

我可以实时取景

pstree -p | grep ssh

我确实尝试过Snoopy,auditd和sudosh,但无法通过ssh记录这些命令。

有一个http://freecode.com/projects/shwatchr。但我无法下载脚本进行测试。

还有其他方法可以做到这一点吗?

谢谢.........

Answers:


4

与其专注于SSH,不如退一步,考虑使用auditd。我假设您真正想要的是跟踪用户,而不是跟踪SSH与其他类型的登录相反。

man auditctl 应该给你一个起点。


很好的提示,但对我来说太抽象了。如何使用auditctl日志ssh命令?
guettli

3

我在服务器suse实验室中使用此选项进行了测试,它可以工作,但是也许有更好的方法。

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

这会记录发送的命令,但不会在远程系统上执行它。
Michael McGarrah '18年

1

我找到了一种方法。有一个由John M. Simpsonhttps://www.jms1.net/)编写的perl脚本。

您要做的就是添加

command="#{path to log-session}"

〜/ .ssh / authorized_keys中每个键之前

仅当您具有无密码的ssh时,它才起作用,但这确实在某种程度上解决了我的目的。

http://www.jms1.net/log-session


1

就我而言,我有完全相同的要求。使用此方法的唯一警告是,如果您不使用ssh密钥,我不确定如何使其工作。在执行命令之前,我做了一个简短的bash脚本来记录命令:

#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"

我将此命令保存到〜/ bin / log-commands中,然后使其可执行(chmod +x ~/bin/log-commands)。

在authorized_keys文件中,我将command=参数添加到了我想为其记录日志的SSH密钥所属的行中,因此将被迫运行log-commands脚本:

command =“ / home / tricky / bin / log-commands” ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ ... 6J0C1ricky@tricky-testing.mydomain

如果有人知道日志记录但不希望您看到命令,则他们可以直接进入交互式会话。如前所述,您已经尝试过史努比,它将为您做到这一点。我没有尝试过的流行替代方法是rootsh,sudosh和log-user-session。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.