首页/系统与基础设施/自动化运维速查/跳板机与多级跳转连接
排障与安全50 条

跳板机与多级跳转连接

多级跳转把认证、主机密钥校验和超时处理都放大了:每一跳都要独立认证与校验,链路越长越需要固化配置并显式设置超时;跳板机应只做通道与审计,不保存业务主机的长期私钥。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​​‌​‌‌​‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

跳板机的定位与多级跳转

生产环境通常不允许从办公网直连业务主机,而是先登录一台受控的跳板机或堡垒机,再由它转接到目标。多级跳转就是在用户与目标之间插入一层或数层中转,好处是集中认证、集中审计、收敛可达范围;代价是每一跳都要单独处理认证、主机密钥校验与超时,链路越长,出现「中间某跳没通但报错指向最后一跳」的概率越高。

基本信息

适用对象OpenSSH 客户端与堡垒机、跳板机架构
常见方式跳转主机参数、代理命令、端口转发、可视化网关
认证要点每一跳各自独立认证,不做隐式传递
校验要点每一跳的主机密钥都要校验,跳板机不能代替目标机
审计要点跳板机侧通常记录会话,敏感操作需保留可追溯记录

四种常见跳转方式

  • 跳转主机参数:在一行里指定一层或多层中转,写法最简洁,适合临时使用
  • 代理命令:把连接过程交给外部程序处理,适合需要特殊拨号或代理的场景
  • 本地端口转发:在本机开监听转发到目标,适合图形工具与数据库客户端接入
  • 动态转发:在本机提供代理端口,按需访问多个目标,适合多目标排查但不便审计
  • 常用配置固化:把跳转规则写进客户端配置按别名调用,避免每次手拼参数导致误连

多跳连接写法

多跳连接写法
ssh -J user@jump1,user@jump2 user@target        # 两级跳转,逐跳认证
ssh -o ProxyCommand='ssh -W %h:%p user@jump' user@target  # 用标准输入转发替代
ssh -L 15432:db.internal:5432 user@jump         # 本地端口转发,供数据库客户端使用
ssh -D 1080 user@jump                           # 动态转发,本机获得代理端口
ssh -vvv -J user@jump user@target 2>&1 | tail -40  # 逐跳查看卡在哪一层
ssh -o ConnectTimeout=8 -J user@jump user@target   # 缩短超时,快速区分哪跳不通

把跳转写进客户端配置

把跳转写进客户端配置
# 按别名调用,避免每次手拼参数
Host prod-db
    HostName db.internal
    User opsuser
    ProxyJump jump1.example.com
    ConnectTimeout 8
    ServerAliveInterval 30

跳转方式的取舍

方式适合场景主要代价
跳转主机参数临时多跳、脚本内调用每跳都要可用,链路长时排错难
代理命令需要特殊拨号或外部程序写法复杂,依赖外部程序可用性
本地端口转发图形工具与数据库接入本机监听需防误暴露,端口易冲突
动态转发多目标临时排查行为宽泛,审计与限权困难
多跳连接的主机密钥校验是逐跳进行的:第一次连接时客户端会分别记住每一跳的指纹。中途替换跳板机或目标机后若出现指纹冲突提示,应先确认是不是预期的设备变更,再决定更新记录。
跳板机上不要保存业务主机的长期私钥:一旦跳板机被入侵,等于交出全部目标。更稳的做法是让认证经由集中身份源与短期凭据完成,跳板机只承担通道与审计职责。具体实现随所选产品或身份方案不同,以官方文档为准。

易错点

  • 忽略逐跳认证:以为登录跳板机后就自动获得目标权限,实际仍需一次完整认证
  • 跳板机上存长期私钥:跳板机一旦被入侵,全部目标主机同时失守,应改用短期凭据
  • 不配置超时直接多跳:默认超时很长,一层不通要等很久才失败,排错效率低
  • 本地转发端口绑定过宽:把内部服务监听到全网可访问地址上,等于绕过跳板机的收敛作用
  • 只验证最后一跳的指纹:跳板机本身的指纹同样要校验,中间被替换时风险最大
  • 把动态转发当常规手段:动态转发行为宽泛,长期使用会让访问审计失去意义

数据来源与参考

  • OpenSSH 手册页:ssh_config(5) 中的 ProxyJump 与 ProxyCommand
  • OpenSSH 手册页:ssh(1) 端口转发选项
  • NIST SP 800-53 相关控制:远程访问与会话审计

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/bastion-multi-hop-connection.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​‌‌​‌​‌‌‌​‌​‌​‌‌​‌‌​​​‌‌‌​‌​​​‌‌​‌​​‌​​‌​‌‌​‌​‌‌​‌​​​​‌‌​‌‌‌‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​‌‌​‌‌‌​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​