标签搜索
PHP

搭建SSH隧道

wehg489
2026-05-10 / 0 评论 / 3 阅读 / 正在检测是否收录...

建立单个临时隧道(手工,不保活)
在内网服务器上执行:

ssh -p 公网SSH端口 -R 公网端口:127.0.0.1:内网端口 root@公网IP

注意
加上 -fN 可后台运行:ssh -fN -p 50001 -R ...
此隧道断开后不会自动重连,适合临时测试。

后续如何添加新的隧道
方法一:修改现有 systemd 服务
停止服务:systemctl stop autossh-tunnel

编辑服务文件:vi /etc/systemd/system/autossh-tunnel.service

在 ExecStart 行中增加新的 -R 公网端口:127.0.0.1:内网端口

ssh -fN -p 50001 -R 新公网端口:127.0.0.1:新内网端口 root@120.47.167.39

重载配置并重启:

systemctl daemon-reload
systemctl restart autossh-tunnel

方法二:临时添加(不保活,仅测试)

ssh -fN -p 50001 -R 新公网端口:127.0.0.1:新内网端口 root@120.47.167.39

检查隧道状态是否正常

  1. 查看 autossh 服务状态(内网服务器)

    systemctl status autossh-tunnel

    active (running) 表示进程在运行。

若显示 failed,查看日志:journalctl -u autossh-tunnel -n 50

  1. 查看公网服务器端口监听
    在公网服务器上执行:

    ss -tlnp | grep -E "29000|34816"

    应看到 0.0.0.0:29000 和 0.0.0.0:34816,进程为 sshd。

  2. 从外网测试端口连通性(Windows PowerShell)

    Test-NetConnection -ComputerName 120.47.167.39 -Port 29000
    Test-NetConnection -ComputerName 120.47.167.39 -Port 34816

    结果应为 TcpTestSucceeded : True。

关机后如何重启
场景一:内网服务器关机后重启
autossh 服务已设置 enable,开机后自动启动。

等待约 10-30 秒(网络就绪 + autossh 重连),隧道自动恢复。

公网服务器无需任何操作。

验证:

systemctl status autossh-tunnel 和 ss -tlnp。

场景二:公网服务器关机后重启
需要确保公网服务器上的 sshd 服务开机自启(默认已启用)。

内网服务器的 autossh 会检测到连接断开,并自动尝试重连(每 10 秒一次),一旦公网 SSH 恢复,隧道自动重建。

无需人工干预。

场景三:两个服务器都重启了
顺序无所谓,autossh 会持续重连直到成功。

建议等待 1 分钟后检查。

手动重启隧道

systemctl restart autossh-tunnel
0

评论 (0)

取消
歌曲封面
0:00