运维123 - bastion
type: channel
link: https://www.sddts.cn/index.php/tag/bastion/
items: SSH 隧道深入解析：通过堡垒机进行转发

SSH 隧道深入解析：通过堡垒机进行转发
type: item
date: 2026-01-18T10:59:10+00:00
description: SSH 隧道深入解析：通过堡垒机进行转发一、概述1. 背景介绍SSH 隧道技术是网络工程师和安全从业者必备的技能之一。在前两部分中，我们介绍了本地端口转发和远程端口转发两种基本的 SSH 隧道方向。本篇文章将深入探讨一种更复杂的场景：通过堡垒机（Bastion Host）进行 SSH 隧道转发。2. 核心概念堡垒机是一种暴露在外部网络中的中间服务器，用于作为访问内部网络的网关。内部系统通常隐藏在堡垒机之后，不直接对外开放访问。这种架构在安全实践中非常常见。3. 应用场景安全地访问受保护的内部网络资源通过跳板机管理多层级网络架构在不暴露内部服务的情况下进行远程运维二、SSH 代理隧道原理1. 工作机制SSH 代理隧道是建立在本地端口转发基础上的扩展技术。其核心思想是：不是将流量直接转发到 SSH 服务器，而是通过一个中间机器（堡垒机）转发到实际目标。2. 架构分析graph LR A[客户端机器] -->|SSH 连接| B[堡垒主机] B -->|网络访问| C[内部机器] A -->|本地端口转发| B B -->|流量转发| C A -.->|最终访问| C3. 关键组件A. 客户端机器用户操作的本地计算机，运行 SSH 命令并建立隧道。B. 堡垒主机暴露在外部网络的中间服务器，作为进入内部网络的网关。C. 内部机器位于受保护网络中的目标服务器，只能通过堡垒机访问。三、实验环境配置1. 网络拓扑典型实验环境包含三台机器：客户端机器：192.168.56.10 - 运行 SSH 命令的本地机器堡垒主机：192.168.56.11 - 暴露在外部的中间服务器内部机器：192.168.57.11 - 需要通过堡垒机访问的目标服务器2. 网络连通性graph TB subgraph 外部网络 Client[客户端 192.168.56.10] Bastion[堡垒主机 192.168.56.11] end subgraph 内部网络 Internal[内部机器 192.168.57.11] end Client -->|可直接访问| Bastion Bastion -->|可访问| Internal Client -.->|无法直接访问| Internal3. 环境要求系统要求所有机器运行 Linux 操作系统SSH 服务已安装并运行网络防火墙规则正确配置权限要求客户端需要有堡垒机的 SSH 访问权限堡垒机需要有内部机器的网络访问权限四、SSH 代理隧道配置1. 基本语法通过堡垒机进行 SSH 隧道转发的命令格式：ssh -L [本地端口]:[内部目标地址]:[内部端口] [堡垒机用户]@[堡垒机地址]参数说明-L：本地端口转发[本地端口]：客户端监听的端口号[内部目标地址]：相对于堡垒机的内部机器地址[内部端口]：内部机器上目标服务的端口号[堡垒机用户]：堡垒机的登录用户名[堡垒机地址]：堡垒机的 IP 地址或域名2. 实战示例假设内部机器 192.168.57.11 上运行着 Web 服务（端口 80），我们要通过堡垒机 192.168.56.11 访问该服务。步骤 1：建立 SSH 隧道ssh -L 8080:192.168.57.11:80 user@192.168.56.11步骤 2：访问内部服务隧道建立后，在客户端浏览器访问：http://localhost:8080流量路径：客户端 localhost:8080 → 堡垒机 → 内部机器:803. 工作流程详解sequenceDiagram participant C as 客户端 participant L as 本地端口 participant B as 堡垒主机 participant I as 内部机器 C->>L: 访问 localhost:8080 L->>B: 通过 SSH 隧道转发 B->>I: 转发到 192.168.57.11:80 I-->>B: 返回响应 B-->>L: 通过隧道返回 L-->>C: 返回给浏览器五、高级配置1. 后台运行隧道使用 -f 参数让 SSH 在后台运行：ssh -f -N -L 8080:192.168.57.11:80 user@192.168.56.11-f：后台运行-N：不执行远程命令，仅建立隧道2. 密钥认证配置 SSH 密钥认证避免重复输入密码：# 生成密钥对 ssh-keygen -t rsa -b 4096 # 复制公钥到堡垒机 ssh-copy-id user@192.168.56.113. 持久化隧道使用 autossh 自动重连断开的隧道：# 安装 autossh sudo apt-get install autossh # 启动持久化隧道 autossh -M 0 -f -N -L 8080:1…