Administrator
Administrator
发布于 2026-10-31 / 0 阅读
0
0

堡垒机与跳板机入门:用 ProxyJump 看懂访问路径和审计边界

适合读者:已经能使用 SSH,准备理解公司内网服务器为什么要“先经过一台入口”。本文区分通用 SSH 跳板与完整堡垒机产品,并用独立客户端配置解释 ProxyJump。域名和内网地址均为示意。

通过跳板访问内网:客户端连接入口,入口转发,目标单独认证与策略审计

1. 为什么服务器不直接给每个人开放公网 SSH

有多台内网服务器时,可以把管理入口集中到专用主机或堡垒机平台。管理员先经过这个入口,再访问自己获准管理的目标。

这样容易集中控制来源、账户和访问流程,但“流量经过一台机器”并不自动等于已经具备审批、录像、命令审计和账号托管。先分清自己使用的到底是哪种系统,才能理解它提供了什么能力。

2. 直接 SSH、跳板机、堡垒机分别在解决什么

方式 典型访问路径 需要另外确认的能力
直接 SSH 客户端 → 目标服务器 每台目标的入口、账户和日志管理
通用 SSH 跳板 客户端 → 跳板 → 目标 转发限制、目标授权、日志范围
堡垒机平台 客户端 → 受控访问平台 → 目标 实际启用的身份认证、授权、审计、录像及保留策略

堡垒机产品的接入方式可能是网页终端、专用客户端、SSH 网关或临时授权,不一定支持普通 ssh -J。下面的配置只适用于明确允许 OpenSSH TCP 转发的通用跳板环境;具体平台应使用它提供的连接方式。

3. ProxyJump 的连接过程是怎样的

设定三方:本地电脑、bastion.example.test 跳板、内网 10.20.0.15 目标。

客户端先对跳板建立 SSH 连接,再请求从跳板转发到目标的 TCP 端口。随后,本地客户端通过这条通道与目标建立自己的 SSH 会话。目标主机的身份和用户认证依然需要完成。

因此,两段连接可以使用不同账户、端口和密钥;目标服务器通常看到来自跳板的连接。ProxyJump 的定义见 OpenSSH ssh_config 手册。

这条方式不需要把个人私钥复制到跳板,也不要求启用 agent forwarding。它把连接通道接起来,并没有替你授予目标账户的登录权限。

4. 用独立文件写一份可检查的配置

先看客户端版本并准备配置目录。下面按 Linux/macOS 风格的客户端路径举例:

ssh -V
mkdir -p "$HOME/.ssh"

使用编辑器保存 ~/.ssh/config.ops-lab,不必改动现有主配置:

Host ops-gateway
    HostName bastion.example.test
    User gatewayops
    Port 22
    IdentityFile ~/.ssh/id_ed25519_gateway
    IdentitiesOnly yes
    ForwardAgent no

Host app-internal
    HostName 10.20.0.15
    User appops
    Port 22
    IdentityFile ~/.ssh/id_ed25519_app
    IdentitiesOnly yes
    ProxyJump ops-gateway
    ForwardAgent no
    ServerAliveInterval 30
    ServerAliveCountMax 3

替换跳板地址、目标地址、账户和已获授权的密钥路径。示例不会生成或分发密钥,也不会修改任何服务器配置。

Host 是本地别名,HostName 是连接地址。通过别名登录时,客户端会选择对应的用户和身份文件;目标段的设置也不能简单假定为自动应用到跳板,所以两段分别写清楚。

Linux 客户端上,这种可能包含内部连接信息的配置文件可限制为本人读写:

chmod 600 "$HOME/.ssh/config.ops-lab"

5. 先展开配置,再进行真实登录

下面的 -G 用于查看配置,不会建立本次 SSH 会话;不过带有 Match exec 等额外规则的配置可能执行本地条件命令,本例没有这些规则。

ssh -F "$HOME/.ssh/config.ops-lab" -G app-internal | \
  grep -E '^(hostname|user|port|proxyjump|identityfile|forwardagent) '

预期能看到目标地址 10.20.0.15、用户 appops 和 proxyjump ops-gateway。继续检查入口的配置:

ssh -F "$HOME/.ssh/config.ops-lab" -G ops-gateway | \
  grep -E '^(hostname|user|port|identityfile|forwardagent) '

配置查询通过,只能证明客户端理解了这些选项。获得实际访问授权、网络条件和有效密钥后,再尝试:

ssh -F "$HOME/.ssh/config.ops-lab" -v app-internal

OpenSSH 参数的含义见 ssh 官方手册。首次连接时需要核对跳板与目标各自的主机身份,不能只确认入口就忽略目标。

登录后执行 whoami、hostname,确认最终进入的是目标账户与目标机器。连接成功但进入了跳板交互终端,和成功通过跳板进入目标不是同一结果。

6. 按两段链路排查,避免只盯一台机器

故障位置 常见证据 核对方向
客户端 → 跳板 域名错误、连接超时、入口认证失败 入口地址、VPN、来源规则、跳板账户与密钥
跳板 → 目标端口 connect failed、拒绝连接、超时 目标监听、路由、安全组和主机防火墙
跳板转发策略 administratively prohibited 等通道拒绝 允许的 TCP 转发及目标列表
目标 SSH 认证 目标阶段的 publickey 拒绝 目标用户、公钥来源和认证条件

通道拒绝提示需要结合跳板日志确认,不能仅凭文字就修改所有转发策略。跳板可能通过 AllowTcpForwarding、PermitOpen 或其他账户约束只允许指定目标;这些限制由管理员按访问范围配置。相关选项见 sshd_config 手册。

单独登录跳板能成功,不能证明跳板到目标的网络和策略也正常。排查记录要写清是哪一段、哪个地址和端口失败。

7. 经过跳板,就一定能记录目标里的所有命令吗

普通 ProxyJump 主要建立转发通道,目标 SSH 会话仍在本地客户端与目标之间加密。只是在入口运行普通 sshd,不能据此推断它能读到并录像所有目标终端内容。

如果业务要求会话录像或命令审计,需要确认平台如何终止、代理或采集会话,并在目标侧配合相应审计机制。还要验证记录是否覆盖实际客户端、文件传输和特定访问方式。

因此,验收堡垒机能力时,不只看“能不能登录”,还应在测试账户中执行一条可识别的教学命令,确认平台是否能按用户、目标和时间查到预期记录。具体做法按所用产品和授权范围执行。

8. 完成一次访问后,留下哪些信息

记录入口与目标的别名、网络路径、两段账户、认证方式、授权范围和有效时间;记录验证的主机身份、最终登录结果,以及实际可查到的审计内容。

遇到目标认证失败时,可以结合站内的 SSH 登录排查文章 继续定位。把“通道能否建立、目标能否认证、行为是否被审计”分别验证,才知道这条管理入口实际提供了哪些保障。


评论