1. 核心概念
- SSH 反向隧道 (
-R):让服务端(公网)主动连接客户端(内网),将内网端口“推”到公网。 - Autossh:SSH 的守护进程,负责监控连接健康状况(通过
-M端口),断线自动重连,保证隧道持久化。
2. 前置配置 (服务端)
在公网服务器上,必须修改 SSH 配置以允许外部访问转发的端口。
- 文件:
/etc/ssh/sshd_config - 修改项:
GatewayPorts yes - 操作:修改后需重启 sshd (
systemctl restart sshd)。如果不开启,端口只能在服务器本地 (127.0.0.1) 访问。
3. 启动命令 (内网端)
autossh -M 20000 -fCNR 0.0.0.0:8000:localhost:5000 root@public_server_ip| 参数 | 含义 |
|---|---|
-M 20000 | 监控端口。Autossh 用它来发送心跳包检测连接状态。 |
-f | 后台运行。 |
-C | 开启压缩,节省带宽。 |
-N | 不执行远程命令(仅转发)。 |
-R | 反向转发模式。格式:[Bind_IP]:[Public_Port]:[Local_Target]:[Local_Port] |
关于 Bind IP 命令中的
0.0.0.0:8000非常关键。如果省略0.0.0.0,默认可能只绑定到 Loopback 接口,导致外网无法访问该端口。
4. 故障排查
-
服务器端:
netstat -tuln | grep 8000查看端口是否监听。 -
内网端:
ps aux | grep autossh查看进程是否存活。 -
云防火墙:检查云服务商的安全组是否放行了 8000 端口。
-
密钥认证:必须提前配置
ssh-copy-id实现免密登录,否则 Autossh 无法自动重连。