在企业网络环境中,通过跳板机访问内网或 WSL2 主机时,SSH 经常出现不稳定问题,例如连接卡在 SSH2_MSG_KEX_ECDH_REPLY,或在连接成功后出现 vim/tmux 显示不完整、会话假死等现象。
这类问题本质上与网络路径、MTU、TCP 长连接稳定性有关,单纯依赖 ssh 或 autossh 很难彻底解决。
目标
实现如下访问路径:
MacBook → 公网服务器 → 内网机器 / WSL2
在 MacBook 上通过 SSH 连接公网服务器的某个端口,即可稳定访问内网主机的 SSH 服务。
服务端(公网服务器)
下载并启动 frps:
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
tar xf frp_0.53.2_linux_amd64.tar.gz
cd frp_0.53.2_linux_amd64
创建最小配置:
# frps.ini
[common]
bind_port = 7000
启动服务:
./frps -c frps.ini
确保云防火墙放行 7000 端口。
客户端(内网机器 / WSL2)
下载 frpc 并配置反向 SSH 通道:
wget https://github.com/fatedier/frp/releases/download/v0.53.2/frp_0.53.2_linux_amd64.tar.gz
tar xf frp_0.53.2_linux_amd64.tar.gz
cd frp_0.53.2_linux_amd64
# frpc.ini
[common]
server_addr = 公网服务器IP
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 2222
启动客户端:
./frpc -c frpc.ini
(在 WSL 中推荐使用 systemd 管理,确保长期运行)
使用与验证
在 MacBook 上直接连接公网服务器映射端口:
ssh -p 2222 user@公网服务器IP
验证方式:
hostname
如果显示的是内网机器 / WSL 的主机名,说明反向代理链路已完全打通。