SSH 远程连接公网映射如何做

作者:袖梨 2026-08-11

SSH远程端口转发实现公网映射,本质是通过有公网IP的服务器中转,将本地内网服务暴露给外网;需满足三条件:公网服务器、本地可SSH连接、sshd_config开启AllowTcpForwarding和GatewayPorts;执行ssh -R 8080:127.0.0.1:8080 user@server_ip即可完成映射。

SSH 远程连接实现公网映射,本质是让外网能访问你本地(内网)的服务,比如本机运行的 Web 服务、数据库或 SSH 本身。它不依赖你家或公司有没有公网 IP,关键靠一台有公网 IP 的服务器做“中转”。最常用、零成本的方式就是 SSH 远程端口转发(即反向隧道)。

确认前提条件

要成功映射,三样东西缺一不可:

  1. 一台拥有真实公网 IP 的 Linux 服务器(如阿里云/腾讯云轻量应用服务器)
  2. 你的本地设备(电脑、树莓派等)能通过 SSH 主动连上这台服务器
  3. 服务器上的 sshd_config 已开启关键配置:AllowTcpForwarding yes 和 GatewayPorts yes

如果没开 GatewayPorts,即使转发成功,外网也访问不到——因为默认只绑定 127.0.0.1,仅限服务器本机访问。修改后需重启 sshd:sudo systemctl restart sshd

执行远程端口转发命令

在你的本地终端运行这条命令(以把本地 8080 端口映射到服务器 8080 端口为例):

ssh -R 8080:127.0.0.1:8080 user@server_ip

说明:

  1. -R 表示远程端口转发(Remote Port Forwarding)
  2. 8080 是服务器上监听的端口(外网访问用这个)
  3. 127.0.0.1:8080 是你本地服务实际监听的地址和端口
  4. user@server_ip 是你服务器的登录凭证

连接保持不断,隧道就持续生效。建议加 -Nf 后台运行:ssh -Nf -R 8080:127.0.0.1:8080 user@server_ip

外网访问与验证

转发成功后,任何人(包括你自己)只要访问 http://server_ip:8080,请求就会经服务器转发到你本地的 8080 服务。

验证是否生效:

  1. 在服务器上执行 netstat -tlnp | grep :8080,应看到监听在 *:8080(不是 127.0.0.1:8080)
  2. 从另一台外网机器 curl http://server_ip:8080,返回本地服务响应即成功
  3. 注意:服务器安全组/防火墙必须放行该端口(如腾讯云控制台、阿里云安全组)

FinalShell 等图形工具配置更省心

如果你习惯用 FinalShell、Xshell 或 Tabby:

  1. 新建一个到公网服务器的 SSH 连接
  2. 在连接设置里找到「隧道」或「端口转发」选项
  3. 类型选「远程(R)」,远程端口填 8080,目标主机填 127.0.0.1,目标端口填本地服务端口(如 8080)
  4. 保存并连接——工具会自动建立隧道,无需记命令

之后直接在浏览器打开服务器公网 IP 加对应端口,就能访问本地服务了。

相关文章

精彩推荐