Linux 内网穿透:不开公网端口登录内网服务器
自己搭 frp 要先有一台有公网 IP 的云服务器,教程都跳过了这一步。Linux 内网穿透的另一条路:一行命令装客户端、控制台建映射,22 端口不必开到公网。
Linux 内网穿透这件事,搜出来的答案几乎是同一条:找一台云服务器,装 frp,服务端一份配置、客户端一份配置。这条路走得通,教程也写得细——细到从第一步「下载对应平台的二进制」开始讲起。
但真正的第一步在那之前。所有教程都默认你已经跨过去了,没有一篇把它写成一步:你得先有一台有公网 IP 的服务器。
这一页先帮你判断要不要走那条路;如果不走,再讲怎么把一台没有公网 IP 的 Linux 机器开出去——以及开出去之后,22 端口会遇到什么。

Linux 内网穿透要不要自己搭:先看第零步
教程从「下载二进制」开始编号。在那之前还有一步,它决定了这条路对你贵不贵。
手上已经有一台闲着的公网服务器、也愿意自己维护它——那自建更自由,配置全在你手里,想怎么改怎么改。
没有的话,第零步就是这条路的第一笔开销:为了把一台内网机器开出去,先去租一台常年在线的公网机器。剩下的工序都建立在它之上。
把两条路要做的事并排摆出来,判断会容易些。左边是自己搭一套 frp 之类的工具,右边是装个客户端把 22 端口单独开出去。
| 你要做的事 | 自己搭一套 | 装个客户端 |
|---|---|---|
| 一台有公网 IP 的机器 | 先得有 | 不需要 |
| 装 | 两侧各下二进制、各写一份配置 | 一行命令,自动认平台与架构 |
| 开机自启 | 两侧各写一次 systemd 服务单元 | 装完就是系统服务,重启自动拉起 |
| 加一条映射、改个端口 | 登进服务器改配置文件、重启服务 | 控制台点一下就生效 |
| 出问题怎么查 | 自己翻两侧日志 | 一条命令导出诊断包交客服 |
| 谁来扛安全 | 认证、加密、防爆破全自理 | 爆破防护与访问规则是现成的 |
这张表里最容易被低估的是第四行。前三行是一次性的,忍一忍就过去了;而加映射、改端口是一直在发生的事——每一次都要 SSH 进那台服务器、改配置文件、重启服务。教程之所以永远显得轻松,是因为教程只需要跑通一次。
还有一件表里放不下的事:那套自建设施你今天为 SSH 搭起来,哪天想拿它做点别的,工序会重新长出来。把本地服务开成网站给外面访问就是这样——国内环境下还要过备案和 HTTPS 证书那两关,本地网站怎么让外网访问那页把这条路单独讲了。纯 SSH 映射走的是 TCP,不涉及备案,但它也用不上那套设施的其余部分。
SSH 映射拿到的是一个域名加一个随机端口
不是一个 IP,也不是一个网页地址,而是一组能直接填进 SSH 客户端的「主机 + 端口」。
建一条协议为 TCP、本地端口填 22 的映射,拿回来的是一个域名加一个端口号。域名的前缀和那个端口号都由服务端分配,不是你能挑的,也猜不出来——这一点本身就有用:公网上按 22 端口全网扫的那批流量,从一开始就落不到你身上。

用起来和平时没区别,只是主机名换成这个域名、端口号换成分配到的那个。ssh 命令的 -p、PuTTY 的 Port 框、终端工具的连接配置,填的都是同一组值。密钥、known_hosts、~/.ssh/config 里的别名,一切照旧。
客户端装在哪、映射又在哪建
厂商教程常把这一步写成「在客户端界面里点添加」——而你要装的那台机器根本没有界面。
分类的维度不是操作系统,是这台设备有没有图形界面。有界面的(比如你自己的 Windows 电脑)装桌面客户端,映射在客户端里建;没界面的(Linux 服务器、树莓派)走一行安装命令,装完到网页控制台里建映射。
命令要带上账号的 API Key,它在控制台的「个人设置」里,sk- 开头:
curl -fsSL https://api.beesdc.com/api/v3/download/install.sh | FLYNAT_API_KEY="<你的 API Key>" sudo -E shUbuntu、Debian、CentOS、Armbian 的命令逐字相同,脚本自己认操作系统和 CPU 架构,树莓派这类 ARM 设备也不必换写法。

然后到控制台建映射。场景预设里有 SSH 这一项,选中之后协议、本地地址、本地端口都替你填好了——TCP、127.0.0.1、22,把这台服务器的 22 端口映射出去要填的就是这三项。远程那一端由服务端分配,不用你填。

装完之后:它在跑吗,重启还在吗,连不上怎么查
装是不会卡的,一行命令的事。会卡的是装完——它到底起来没有、断了是哪一段断的。
它在跑吗
一条 sudo flynat-manage status 看两件事:客户端正在运行、设备已注册。两项都过,机器这一侧就没问题了。
重启还在吗
在。客户端装完由系统服务托管,机器断电重启、内核升级重启之后自动拉起,不用你写服务单元、也不用手动去起。
连不上怎么查
sudo flynat-manage diagnose 导出一个诊断包,发给客服直接定位。不必自己描述现象,也省掉来回问的那几轮。

这一节看着琐碎,但它是自建那条路上最容易漏算的部分。两侧的服务各自会不会开机自启、断了谁负责拉起来、日志散在哪两台机器上——这些都得你自己安排。教程通常写到「启动成功」就结束了。
一条映射顺带把 SFTP 和 scp 也带出去了
它们本来就走同一个端口,不必各建一条,也不多占额度。
SFTP 不是另一个服务,它跟着 SSH 走同一个端口。映射建好之后,把同一组域名与端口填进 FileZilla、WinSCP 或者 sftp 命令,直接就能传文件——完整操作步骤见 SFTP 文件传输。
备份脚本和同步任务也是一样:scp、rsync 用的还是这条映射,改的只是目标主机和端口那两个参数,脚本其余部分不用动。
所以「传文件要不要再开一条」这个问题,答案是不用。你为 22 端口建的那一条,已经把这些一起带出去了。
多台机器怎么管:每台一条,还是只开一个跳板
两种都常见,分界线是这些机器彼此之间通不通。
散在各处:每台各建一条
机器分布在不同地方——一台在客户机房、一台在办公室、一台在家——它们之间本来就不互通,那就各装一次客户端、各建一条映射。用同一个账号登录,这些设备在控制台是一个列表,谁在线、谁掉了一眼能看到。
代价是条数按套餐算,机器多了要先看额度够不够,见价格页。
同一个内网:只开一个跳板
机器都在同一个内网里,那就没必要一台一条:挑一台常开的做入口,只给它建映射,其余机器从它跳过去。这也是我们自己在用的方式。
好处不只是省条数——外面能碰到的入口从 N 个收回 1 个,要收窄访问规则也只有一处要配。代价是那台机器成了单点,它掉线其余的也一并进不去;另外它的账号得管起来,谁能登、离职了怎么收回,这些映射侧管不了。

22 端口一开,就会有人不停地试
随机入口挡掉了全网扫,但只要地址被谁知道了,撞库还是会来。
做这个产品之前,我们把一台 Linux 机器的 22 端口直接开到了公网,同一批还开了台 Windows 的远程桌面。几天之后就出事了:Windows 那台中了勒索病毒,Linux 那台最后重装。RDP 暴露公网安全吗那页专门讲了 Windows 这一侧。
Linux 那台当时只跑了一个 frpc,机器上没有别的东西,损失才停在重装——这是运气,不是设计。顺带一提,它之所以挂在公网上,正是因为它在做内网穿透:自己搭那套方案,会多出一台常年在线、开着 SSH 的机器要守,而它通常不在任何人的资产清单里。
产品的爆破防护之所以重点识别 SSH 与远程桌面这两类,起因就是这件事。
这一侧默认在挡
爆破防护重点识别的正是 SSH 与远程桌面这两类高频被撞的服务,异常访问会被分级拦截,拦下的来源进防护日志。其他协议不承诺同样的识别能力。
动作:把自己的固定出口 IP 加进放行名单,免得误伤
那一侧只有你能做
撞库撞的就是密码那一层。这一层归你自己的服务器管,映射侧代劳不了——没有密码可撞,是最干净的做法。
动作:服务器上关掉密码登录,只留公钥

回到那台重装过的机器:换成密钥登录之后,它再没被入侵过——但日志里的爆破尝试一天都没停过。这两件事要一起看。改完不会安静,撞的人不会走;变的是他们再也没有东西可撞。
再往上还能收:只放行公司或家里的固定出口 IP、只在工作时段开。设置在客户端「安全 → 访问规则」里,逐条说明见安全指南。
什么时候别选它
这几种情况,另有更合适的答案。
- 第零步你已经跨过去了 —— 手上就有一台闲着的公网服务器,也愿意自己维护它。那自建确实更自由:配置全在你手里,想加什么改什么都不用问别人。这一页开头那张表,右边那列的好处对你就不成立了。
- 生产核心系统,或有等保、合规审计要求 —— 走专线或零信任方案,别用任何形式的公网映射。
- 团队要整段内网可达(内网服务发现、一堆机器随便连)—— 那是 VPN 的题目,不是单条映射能覆盖的。
- 要传的是大批量数据 —— SFTP 走的也是同一条映射,限速一样,先按套餐带宽算一遍时间,见价格页。

