ssh 命令 记录 log

2025-03-30 14

Image

ssh 命令 记录 log

当我们需要对SSH命令的执行过程进行记录时,可以通过配置SSH服务器和客户端的日志功能来实现。提供几种解决方案,帮助用户记录SSH命令日志,包括修改sshd_config文件、使用脚本记录以及通过中间代理记录等方法。

修改sshd_config配置文件

最直接的方法是通过修改SSH服务端的配置文件/etc/ssh/sshd_config,启用详细的日志记录功能。具体步骤如下:

  1. 打开配置文件:sudo nano /etc/ssh/sshd_config
  2. 修改或添加以下行:

    LogLevel VERBOSE
  3. 重启SSH服务以应用更改:sudo systemctl restart sshd

系统会将用户的登录信息、使用的公钥以及其他相关信息记录到系统的日志文件中(通常是/var/log/auth.log)。如果需要记录更详细的信息,可以将LogLevel设置为DEBUG级别,但要注意这可能会产生大量的日志数据。

使用脚本记录命令

另一种方法是通过在用户登录后自动运行的脚本来记录每个用户执行的命令。这种方法需要编辑用户的.bashrc或者.profile文件,添加一个简单的日志记录脚本。

bash
export PROMPT_COMMAND='RETRN_VAL=$?;LOGGER "[${USER}] executed command [${BASH_COMMAND}] at [`date`] with return value [$RETRN_VAL]"'

这段代码会在每次命令执行后,自动将命令内容、执行时间和返回值记录到系统日志中。如果你希望将日志记录到特定文件而不是系统日志,可以替换LOGGERecho并将输出重定向到一个文件。

通过中间代理记录

对于更加复杂的场景,比如需要对所有用户的命令进行集中管理,可以考虑使用SSH代理服务器。代理服务器可以在用户连接到目标服务器之前拦截并记录所有的SSH流量。

例如,可以使用sshuttle或者编写自定义的SSH隧道脚本来实现这一目的。下面是一个简单的SSH隧道脚本示例:

bash</p>

<h1>!/bin/bash</h1>

<p>LOGFILE="/var/log/ssh_commands.log"
COMMAND="$@"
echo "$(date) - User: ${USER} - Command: ${COMMAND}" >> $LOGFILE
ssh $@

将这个脚本保存为logssh并赋予可执行权限后,用户可以通过运行logssh user@host来代替普通的ssh命令。这样,所有的SSH命令都会被记录到指定的日志文件中。

来说,记录SSH命令的日志可以通过调整服务器配置、使用客户端脚本或设置中间代理等多种方式实现。每种方法都有其适用的场景和优缺点,用户可以根据自己的需求选择最合适的方式。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载