admin 管理员组

文章数量: 1184232

SSH 高级应用:远程端口转发暴露内网服务,临时演示不求人

前言:为什么需要 SSH 远程转发?

你是否遇到过这些 “临时演示” 的尴尬场景?

  • 本地开发的 Web 项目(如 127.0.0.1:8080),想让客户远程访问看效果,却不知道怎么暴露到外网;
  • 公司内网的测试数据库(192.168.1.10:3306),同事在外网想临时连接调试,搭 VPN 太麻烦、改路由器端口映射又没权限;
  • 本地运行的小程序后端服务,需要让外部服务器回调测试,却找不到简单的暴露方式。

其实,SSH 远程转发(Remote Port Forwarding) 就是解决这些问题的 “轻量神器”—— 无需额外安装软件,仅用一台可 SSH 登录的公网服务器(如阿里云、腾讯云轻量机),就能通过加密隧道将内网服务 “映射” 到公网,外部只需访问公网服务器的指定端口,就能穿透到内网服务,用完即关,安全又便捷。

本文全程实战,从 “原理拆解→多场景指令→问题排查”,带你掌握内网服务临时暴露的完整流程,看完就能上手。

一、先搞懂:SSH 远程转发的核心逻辑

在动手前,先明确远程转发的 “数据流向”,避免操作时踩坑(这是和本地转发的核心区别)。

1. 核心原理图示

外部设备(如客户电脑)→ 公网服务器(公网IP:暴露端口)→ SSH 加密隧道 → 本地设备(内网服务:内网端口)

  • 关键角色
    • 公网服务器:需有固定公网 IP(如 47.100.xxx.xxx),可通过 SSH 登录,作为 “中转跳板”;
    • 本地设备:运行内网服务(如 Web、数据库),能 SSH 连接到公网服务器;
    • 外部设备:需要访问内网服务的设备(如客户电脑、同事手机),只需能访问公网服务器。

2. 核心区别:远程转发 vs 本地转发

转发类型

数据流向

核心用途

本地转发

本地端口 → 公网服务器 → 内网

外网访问内网(如在家连公司数据库)

远程转发

公网服务器端口 → 本地 → 内网服务

内网服务暴露到外网(如演示、测试)

3. 前置条件

  • 1 台可 SSH 登录的公网服务器(下文简称 “跳板机”),系统不限(CentOS、Ubuntu、Debian 均可);
  • 本地设备已安装 SSH 客户端(Linux/macOS 自带,Windows 用 Git Bash、Windows Terminal 或 PuTTY);
  • 内网服务已正常运行(如本地 Web 服务 127.0.0.1:8080、内网数据库 192.168.1.10:3306);
  • 公网服务器需开放 “暴露端口”(如 8081,后续会讲防火墙配置)。

二、实战场景 1:暴露本地 Web 服务(最常用)

场景描述

  • 本地设备(内网环境,无公网 IP)运行着一个 Web 服务,访问地址为 127.0.0.1:8080(如 Vue、SpringBoot 项目);
  • 需让外部客户通过 http://公网IP:8081 访问这个本地 Web 服务,用于临时演示。

完整操作步骤(分 3 步:公网服务器配置 → 本地转发 → 外部测试)

步骤 1:公网服务器配置(关键!允许外部访问转发端口)

默认情况下,SSH 远程转发的端口仅绑定公网服务器的 127.0.0.1(仅服务器本地可访问),外部无法访问,必须先修改 sshd_config 开启 “网关端口”:

  1. 登录公网服务器(用你自己的服务器 IP、用户名和端口):

# 格式:ssh 用户名@公网IP -p SSH端口(默认22,非默认需改)

ssh root@47.100.xxx.xxx -p 22

  1. 修改 SSH 配置文件 sshd_config

# 编辑配置文件(CentOS、Ubuntu 路径一致)

sudo vim /etc/ssh/sshd_config

找到 GatewayPorts 配置项(默认可能注释或设为 no),修改为:

本文标签: 端口 内网 演示 高级 SSH