You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SSH实现公网访问内网笔记本的指定端口?

如何通过SSH实现公网访问内网笔记本的指定端口?

嗨,刚好我之前也碰到过类似的需求,你想要的这个转发逻辑用SSH反向隧道就能实现,只是你之前可能没注意到默认配置的限制!

你之前试的-L是正向隧道,方向刚好反过来了——正向是把本地端口转发到远程,而你需要的是反向隧道(也就是-R选项),但默认情况下-R只会让RemoteServer的端口绑定在127.0.0.1上,只有服务器自己能访问,公网根本连不上。下面给你一步步解决:

第一步:在LocalLaptop上建立反向隧道

直接在你的笔记本上执行这条命令:

ssh -R 0.0.0.0:8888:localhost:80 your-remote-user@remote-server-ip

解释一下参数:

  • -R:表示创建反向隧道,把RemoteServer的端口流量转发到LocalLaptop
  • 0.0.0.0:8888:让RemoteServer在所有网卡上监听8888端口(默认是127.0.0.1,仅限本地访问)
  • localhost:80:把RemoteServer 8888端口的流量转发到LocalLaptop的80端口

第二步:修改RemoteServer的SSH配置(关键!)

默认SSH服务不允许反向隧道绑定到非127.0.0.1的地址,所以你需要登录到RemoteServer,修改SSH配置文件:

  1. 编辑配置文件:
sudo nano /etc/ssh/sshd_config
  1. 找到GatewayPorts这一行(如果被注释了就去掉#),把值改成yes:
GatewayPorts yes
  1. 重启SSH服务让配置生效:
# 用systemd的系统(比如Ubuntu 16.04+、CentOS 7+)
sudo systemctl restart sshd

# 旧系统用service命令
sudo service ssh restart

第三步:验证和测试

现在你从公网的任意机器访问remote-server-ip:8888,流量就会通过SSH隧道转发到你的LocalLaptop的80端口了!

一些额外提醒

  • 别忘了检查RemoteServer的防火墙(比如ufw、iptables),要允许8888端口的入站流量,不然公网请求会被挡住。
  • 如果需要隧道长时间稳定运行,可以用autossh工具代替ssh,它会在连接断开时自动重连。
  • 测试完成后记得关掉隧道,最好把GatewayPorts改回默认的no,避免不必要的安全风险。

备注:内容来源于stack exchange,提问作者Bart Friederichs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:29:53