You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在作为ProxyJump的堡垒机上记录连接信息?

如何在作为ProxyJump的堡垒机上记录连接信息?

你猜的完全没错!用ssh -J(也就是ProxyJump)的时候,堡垒机上建立的是纯转发通道,根本不会启动登录shell,所以你之前配置的ForceCommand只会在直接登录堡垒机时触发,转发连接时完全没反应。

下面给你两种靠谱的解决方法,按需选择:


方法一:调整SSH日志级别(简单省心,依赖日志分析)

这是最省事的办法,不用写脚本,只要改一下堡垒机的SSH配置:

  1. 打开堡垒机的/etc/ssh/sshd_config文件,找到LogLevel这一行,改成:
    LogLevel VERBOSE
    
  2. 重启SSH服务生效:systemctl restart sshd(如果是老系统可能用service ssh restart)

之后,你去堡垒机的日志文件(一般是/var/log/auth.log或者/var/log/secure)里找,就能看到类似这样的条目:

Accepted publickey for username1 from 192.168.1.100 port 54321 ssh2: RSA SHA256:...
debug1: channel 0: new [direct-tcpip]
debug1: channel 0: direct-tcpip: listening port 0 for 10.0.0.10 port 22, originator 192.168.1.100 port 54321

这里面的信息刚好是你要的:

  • username1:通过堡垒机的用户账号
  • 192.168.1.100:用户的源IP地址
  • 10.0.0.10:目标服务器S1的IP地址

如果想要更规整的日志,你可以写个小脚本定期解析这个日志文件,把这些信息提取出来存到单独的日志文件或者数据库里。


方法二:自定义脚本实时记录(灵活可控,自定义格式)

如果想直接用脚本实时记录,关键是让SSH服务在转发连接时也触发我们的脚本。我们可以通过Match块配合ForceCommand实现,同时让脚本区分直接登录和转发连接的场景:

步骤1:写记录脚本

创建一个脚本文件,比如/usr/local/bin/log_proxy_jump.sh,内容如下:

#!/bin/bash

# 获取基础信息
CURRENT_USER=$(whoami)
SOURCE_IP=$(echo "$SSH_CLIENT" | awk '{print $1}')
LOG_FILE="/var/log/proxy_jump_connections.log"

# 判断是否为ProxyJump转发连接
if [ -z "$SSH_ORIGINAL_COMMAND" ]; then
    # 检查当前进程关联的转发通道信息
    CHANNEL_DETAILS=$(ss -tulpn | grep "$PPID" | grep -E 'ESTABLISHED.*ssh')
    if echo "$CHANNEL_DETAILS" | grep -q 'direct-tcpip'; then
        # 提取目标服务器IP
        TARGET_IP=$(echo "$CHANNEL_DETAILS" | awk '{print $5}' | cut -d: -f1)
        # 写入自定义日志
        echo "$(date '+%Y-%m-%d %H:%M:%S') | USER: $CURRENT_USER | SOURCE_IP: $SOURCE_IP | TARGET_SERVER: $TARGET_IP" >> "$LOG_FILE"
    fi
    # 允许继续进入shell或转发
    exec "$SHELL"
else
    # 如果是直接在堡垒机执行命令,也记录下来
    echo "$(date '+%Y-%m-%d %H:%M:%S') | USER: $CURRENT_USER | SOURCE_IP: $SOURCE_IP | COMMAND: $SSH_ORIGINAL_COMMAND" >> "$LOG_FILE"
    exec $SSH_ORIGINAL_COMMAND
fi

然后给脚本加执行权限:

chmod +x /usr/local/bin/log_proxy_jump.sh

步骤2:修改SSH配置

打开/etc/ssh/sshd_config,添加或修改以下内容:

Match all
    ForceCommand /usr/local/bin/log_proxy_jump.sh

保存后重启SSH服务生效。

注意事项

  • 确保堡垒机的PermitTTY yes(默认就是yes,不用改),否则脚本可能无法正常运行。
  • 测试的时候一定要开一个备用的SSH连接到堡垒机,避免配置错误导致自己连不上!

备注:内容来源于stack exchange,提问作者cyberpirate92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:15:28