1. 安装 SSLH
Ubuntu/Debian
sudo apt updatesudo apt install sslh默认选择 Standalone 模式
2. 配置 SSLH
编辑 /etc/default/sslh(Debian/Ubuntu)或 /etc/sslh.cfg(CentOS/RHEL):
# 监听 443 端口(IPv4 + IPv6)DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --listen [::]:443 --ssh 127.0.0.1:22 --tls 127.0.0.1:443 --http 127.0.0.1:80 --openvpn 127.0.0.1:1194"参数说明:
--listen 0.0.0.0:443:SSLH 监听 443 端口(外部访问)。--tls 127.0.0.1:443:HTTPS 流量转发到本机 Nginx/Apache(443)。--openvpn 127.0.0.1:1194:OpenVPN 流量转发到本机 OpenVPN 服务器(默认 1194)。--ssh 127.0.0.1:22(可选):SSH 流量转发到本机 SSH 服务(22)。
3. 启动 SSLH
sudo systemctl enable sslhsudo systemctl start sslh检查状态:
sudo systemctl status sslh查看日志:
journalctl -u sslh -f总结
✅ SSLH 成功运行后:
- 外部访问
443端口时:- HTTPS 请求 → 交给 Nginx/Apache(127.0.0.1:443)。
- OpenVPN 请求 → 交给 OpenVPN 服务器(127.0.0.1:1194)。
- SSH 请求(可选) → 交给 SSH 服务器(127.0.0.1:22)。
🚀 适用场景:
- 绕过公司/学校防火墙(因为 443 端口通常开放)。
- 在单 IP 服务器上同时运行 HTTPS + OpenVPN + SSH。
⚠️ 注意事项:
- 如果 OpenVPN 使用 UDP,需确保 SSLH 支持 UDP 模式(较新版本支持)。
- 如果 Nginx 已经占用 443,需先修改 Nginx 监听地址(127.0.0.1:443)。
如不需要 Apache2
解决方案
✅ 方案 1:停止并禁用 Apache2
sudo systemctl stop apache2 # 停止 Apache2sudo systemctl disable apache2 # 禁止开机自启然后检查 80 端口是否释放:
sudo ss -tulnp | grep ':80' # 应该无输出✅ 方案 2:卸载 Apache2(如果不需用它)
sudo apt remove apache2 apache2-utils # Debian/Ubuntu清理残留配置:
sudo apt autoremove --purge # Debian/Ubuntu Thanks for reading!