前言

在公司、校园网络环境中,管理员常通过DPI 深度包检测、IPS 入侵防御封锁 SSH 默认 22 端口,一旦识别 SSH 协议就会发送 RST 包强制中断连接,导致无法远程管理自己的云服务器。

本文分享一套合法、安全、无侵入的解决方案:基于stunnel将 SSH 流量伪装成 HTTPS 加密流量,走 443 通用端口,绕过绝大多数网络封锁,适配Ubuntu 服务器 + Windows 客户端,全程复制粘贴即可完成。

核心原理

  • 网络封锁逻辑:DPI 识别 22 端口 + SSH 明文特征,主动阻断;
  • 绕过思路:用 TLS 加密包裹 SSH 流量,伪装成 HTTPS 网站流量
  • 方案优势:端口 443(全网通行)、无 SSH 特征、全程加密,抗 RST 阻断。

服务端配置(Ubuntu 一键部署)

安装依赖

1
apt update && apt install stunnel4 -y

生成 TLS 证书(自用无需申请)

1
2
3
4
openssl req -new -days 3650 -nodes -x509 -sha256 \
-keyout /etc/stunnel/stunnel.key \
-out /etc/stunnel/stunnel.crt \
-subj "/CN=myself"

写入核心配置

监听 443 端口,转发流量至本地 22 端口(SSH 服务):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo tee /etc/stunnel/stunnel.conf > /dev/null <<'EOF'
foreground = yes
sslVersion = TLSv1.2
ciphers = HIGH:!aNULL:!MD5
# options = NO_SSLv2
# options = NO_SSLv3
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1

[ssh]
accept = 0.0.0.0:443
connect = 127.0.0.1:22
cert = /etc/stunnel/stunnel.crt
key = /etc/stunnel/stunnel.key
EOF

启用stunnel4服务

Ubuntu 的 stunnel4 软件包默认禁用了服务,需要手动启用。

编辑 /etc/default/stunnel4

1
sudo vim /etc/default/stunnel4

找到并修改 ENABLED 参数

1
ENABLED=1 # 将0更改成1

启动并设置开机自启

1
2
3
4
5
6
7
8
# 开机自启 
systemctl enable stunnel4

# 启动服务
systemctl restart stunnel4

# 查看运行状态(出现active (running)即为成功)
systemctl status stunnel4

放行防火墙 + 云服务器安全组

1
2
# 如果使用了防火墙的话  放行443端口 
ufw allow 443/tcp

⚠️ 云服务器必须在控制台安全组开放 443 端口,否则无法连接。

客户端配置(Windows 极简设置)

安装 stunnel

下载地址:https://www.stunnel.org/downloads.html

一路默认安装即可。

修复端口占用报错(关键)

Windows 本地 22 端口易被占用,会导致启动失败,务必使用自定义端口

打开C:\Program Files (x86)\stunnel\config\stunnel.conf清空原有内容,粘贴配置:

1
2
3
client = yes 
[ssh] accept = 127.0.0.1:12345
connect = 你的服务器公网IP:443

启动客户端

双击桌面stunnel GUI,托盘出现小锁图标即为运行成功。

远程连接使用

打开 Windows CMD/PowerShell,执行命令连接服务器:

1
2
ssh 服务器用户名@127.0.0.1 -p 12345 
# 示例:ssh root@127.0.0.1 -p 12345

总结

面对公司 / 校园的 SSH 封锁,无需复杂操作,stunnel就能轻松将 SSH 伪装成 HTTPS 流量,443 端口全网通行,完美解决 RST 阻断问题。这套方案是个人远程管理服务器的最优解,安全稳定且零门槛上手。