Linux ssh客户端logging所有命令

我将设置一个Linux控制台框,以便仅通过该Linux机器通过sshlogin到思科设备。 我如何在Linux上设置ssh客户端来logging应用到思科设备的所有命令?

您可以使用script命令来logging所有terminal输出,其中一般情况下包括所有input的命令。

如果要附加到单个文件,调用可能如下所示:

 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" 

如果用户被要求自己input这些命令,他们当然会懒得做所有额外的input来启用日志logging。 而把整个东西写在一个shell脚本中对你来说可能还不够好,因为我假设你不希望用户能够绕过日志logging。

因此,您希望避免有权访问的用户绕过日志logging,并且不希望他们对包含日志的目录拥有写入权限。

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

我发现一个解决scheme“| tee -a日志文件”有没有其他的解决scheme呢? 我只需要在日志文件中的命令不是所有的输出,如果这是可能的。

纠正我,如果我错了,但AFAIK,即使CISCO设备有一个.bash_history文件。 login时,所有命令都按时间顺序保存。 所以我没有看到使用SSH客户端来保存你input的每个命令。