RFC 4254 端口转发 · direct-tcpip 信道复用 · 强密码学防护 · 极速自救利器
基于 IETF RFC 4254 规范,利用 OpenSSH 的动态端口转发功能(ssh -D)在本地监听 SOCKS5 代理[1]。 无需在远端服务器安装任何特殊代理服务端,只要拥有普通 SSH 管理权限,就能瞬间构筑加密翻墙通道; 是技术人员手中最普遍、最可靠的“先遣应急越障”手段[2]。
芬兰赫尔辛基工业大学 Tatu Ylönen 为替代明文 Telnet/rlogin 设计并开源 SSH-1。
IETF SECSH 工作组发布 RFC 4254,正式确立多路信道与 direct-tcpip 动态转发标准。
OpenSSH 6.5 引入 ChaCha20-Poly1305,后续现代代理内核(sing-box/Mihomo)原生内置出站支持。
编写口径:所有时间节点严格以 IETF RFC 官方文献、OpenBSD 发布说明及代理内核代码库为依据。
Secure Shell(SSH)起初由芬兰学者 Tatu Ylönen 于 1995 年设计,用于取代明文传输账号密码的 Telnet、rlogin 与 rsh。 随着 OpenBSD 团队接管并发展出 OpenSSH,SSH 迅速成为了整个互联网 Linux 服务器管理的工业基础[2]。
但在网络工程师手中,SSH 拥有一个极其强大的副业——动态端口转发(Dynamic Port Forwarding)。 通过一条简单的终端命令 ssh -D 1080 user@remote-vps, 客户端会在本地 1080 端口启动一个符合 RFC 1928 规范的标准 SOCKS5 代理。 浏览器或操作系统的网络请求发送至该端口后,会被 SSH 客户端打包为 direct-tcpip 逻辑信道, 经过强加密的 SSH 主连接传输至远端服务器,再由远端服务器代为建立 TCP 连接并原路回传[1]。
SSH 动态隧道是不需要任何前置部署的“单兵自救工具”。 当你刚刚购买一台崭新的海外 VPS,或者其他专业翻墙协议因配置失误或证书过期中断时, 只要 SSH 端口能连上,你就可以在 5 秒钟内恢复网络自由。
SSH_MSG_CHANNEL_OPEN(类型为 direct-tcpip), 远端 SSH 守护进程(sshd)收到后在远端系统执行 connect(),握手成功后返回确认。direct-tcpip 逻辑信道。SSH_MSG_CHANNEL_CLOSE 回收通道资源。由于所有并发 HTTP 请求的 TCP 流量被强制压缩在单个外层 TCP 隧道内, 一旦公网发生丢包,外层 TCP 触发重传会迫使所有内部上层连接同时暂停。 此外,长时间在 22 端口跑持续性大流量容易触发 GFW 的行为统计模型引发限速[4]。
以下时间线记录了 SSH 协议从芬兰初创、OpenSSH 诞生、IETF 端口转发标准化到现代代理内核集成的全景里程碑:
OpenSSH 首次引入 -D 参数,客户端可在本地监听 SOCKS4/SOCKS5 端口并将应用请求动态中继到远端。
OpenSSH 2.9 发布记录SECSH 工作组标准化通道复用机制与 direct-tcpip,使各家 SSH 客户端与服务端的端口转发完全互通。
IETF RFC 4254 规范文件在 Shadowsocks 出现前,国内技术圈普遍使用 Windows GUI 包装(如 MyEntunnel/PuTTY)搭配浏览器 AutoProxy 插件翻墙。
GFW 历史测量与审查报告全面引入现代密码学套件,大幅降低 ARM 与移动设备的软解密 CPU 开销,提升吞吐效率。
OpenSSH 6.5 Release Notes无需依赖本地安装的 OpenSSH 二进制进程,代理内核直接在内部管理 SSH 连接池与规则路由转发。
sing-box 官方文档:SSH 出站SSH 动态隧道享有全操作系统开箱即用的天生优势,现代翻墙内核也均已原生支持 SSH 出站。
| 软件 / 内核 | 类型 | 支持平台 | 支持级别 | 起始版本 | 发布日期 | 特性说明 |
|---|---|---|---|---|---|---|
| OpenSSH (ssh -D) | 核心内核 | Linux, macOS, Windows 10/11, BSD | 官方参考实现 | OpenSSH 2.9+ | 2001.02.04 | 所有主流操作系统自带的标准工具,一条终端命令即可在本地端口监听 SOCKS5 代理。 |
| PuTTY (Plink) | 客户端 | Windows, Linux | 主流桌面客户端 | 0.50+ | 1999.01.22 | Windows 经典终端客户端,支持在 Connection -> SSH -> Tunnels 中配置动态端口转发。 |
| sing-box (SSH Outbound) | 核心内核 | Linux, Windows, macOS, Android, iOS | 原生代理出站 | v1.1.0+ | 2023.01.10 | 底层纯 Go 实现的 SSH 客户端,免外部进程开销,直接将 SSH 节点纳入规则分流。 |
| Mihomo (Clash Meta) | 核心内核 | Linux, Windows, macOS, Android | 原生代理出站 | v1.16.0+ | 2023.08.01 | Clash Meta 内核原生支持 ssh 代理节点类型,支持私钥认证与密码双重认证方式。 |
| Shadowrocket | 客户端 | iOS, iPadOS, macOS | 通用客户端集成 | 2.1.40+ | 2018.11.05 | iOS 知名网络代理工具,原生支持添加 SSH 类型的代理节点作为分流出站。 |
新服初探与紧急越障:刚开出的境外 VPS,尚未部署任何 Xray 或 sing-box 服务端时,立即获得翻墙能力; 高权限保密环境:受管辖的合规终端不允许随意安装第三方翻墙软件,仅允许使用内置的系统级 OpenSSH; 开发工具链穿透:VS Code Remote、Git 远程仓库拉取及终端命令行工具的局部无缝代理。
不支持 UDP 协议转发:标准 SSH 端口转发仅支持 TCP(direct-tcpip),无法原生承载语音通话、在线电竞等 UDP 报文; TCP-over-TCP 性能劣化:跨国线路高丢包率下,外层重传机制会引发雪崩式的吞吐下跌; 不可长时间跑高带宽视频:在标准 22 端口持续跑数十 GB 流量极易被防火墙启发式策略标记并产生周期性 TCP RST 干扰。
词条事实与技术定义均以 IETF RFC 官方文献与 OpenSSH 官方手册为准: