SSH远程端口转发实现公网映射,本质是通过有公网IP的服务器中转,将本地内网服务暴露给外网;需满足三条件:公网服务器、本地可SSH连接、sshd_config开启AllowTcpForwarding和GatewayPorts;执行ssh -R 8080:127.0.0.1:8080 user@server_ip即可完成映射。
SSH 远程连接实现公网映射,本质是让外网能访问你本地(内网)的服务,比如本机运行的 Web 服务、数据库或 SSH 本身。它不依赖你家或公司有没有公网 IP,关键靠一台有公网 IP 的服务器做“中转”。最常用、零成本的方式就是 SSH 远程端口转发(即反向隧道)。
要成功映射,三样东西缺一不可:
如果没开 GatewayPorts,即使转发成功,外网也访问不到——因为默认只绑定 127.0.0.1,仅限服务器本机访问。修改后需重启 sshd:sudo systemctl restart sshd
在你的本地终端运行这条命令(以把本地 8080 端口映射到服务器 8080 端口为例):
ssh -R 8080:127.0.0.1:8080 user@server_ip
说明:
-R 表示远程端口转发(Remote Port Forwarding)8080 是服务器上监听的端口(外网访问用这个)127.0.0.1:8080 是你本地服务实际监听的地址和端口user@server_ip 是你服务器的登录凭证连接保持不断,隧道就持续生效。建议加 -Nf 后台运行:ssh -Nf -R 8080:127.0.0.1:8080 user@server_ip
转发成功后,任何人(包括你自己)只要访问 http://server_ip:8080,请求就会经服务器转发到你本地的 8080 服务。
验证是否生效:
netstat -tlnp | grep :8080,应看到监听在 *:8080(不是 127.0.0.1:8080)http://server_ip:8080,返回本地服务响应即成功如果你习惯用 FinalShell、Xshell 或 Tabby:
127.0.0.1,目标端口填本地服务端口(如 8080)之后直接在浏览器打开服务器公网 IP 加对应端口,就能访问本地服务了。