可以运行“ssh user@server $command”。由于没有打开任何 shell,此命令不会写入 bash 历史记录。我想知道服务器上有哪些迹象可以显示此命令的证据。我猜想在执行时,它会出现在 ps 输出中,也许如果您运行“w”来查看谁已连接以及他们正在运行什么?否则,如果您在执行命令时没有看到它,服务器上是否记录了有关此命令的其他信息?这是假设您正在运行的命令不会修改文件或以某种方式留下提交更改的痕迹。
是否有一个unix实用程序可以提供此类命令的日志记录?
答案1
如果您实际上需要的是审计日志,那么 bash 历史记录根本不合适,因为它可以由同一用户删除/编辑。(bash 历史记录本质上是为了该用户的利益而记录的,以便他们可以重复使用以前的命令等。)
为了获得正确的审计日志,你可以使用审计(在 Linux 上,同样的一般想法也适用)并让它记录与您的需求相关的系统事件(命令执行、文件访问等)并将该日志存储在安全的位置(最好是完全不同的系统,以便在系统受到威胁的情况下不会丢失审计日志)。
答案2
除非相应用户没有日志 shell,例如 sudosh(默认情况下,它也拒绝运行此类命令),否则运行的命令将不会保存在任何地方。您将能够在日志(通常为 /var/log/secure)和最后一条命令中看到相应用户已登录。