如何在Linux中配置内网穿透 Linux使用frp实现远程访问的方法

老明姑娘_3692

老明姑娘_3692

2026-05-26

845人浏览

原创

frp连接失败主因是版本、IP、端口、token四者未严格对齐:frps与frpc版本必须完全一致;server_addr须填公网IP而非域名;SSH穿透需type="tcp"且remote_port与local_port不可混淆;auth.token须字节级一致,建议用sha256sum校验。

如何在linux中配置内网穿透 linux使用frp实现远程访问的方法

frp 能用,但配置错一个字就彻底连不上——80% 的失败不是网络问题,而是版本、IP、端口或 token 四个点没对齐。

frps 和 frpc 版本必须完全一致

frp 不像多数工具能向下兼容。frps 是 v0.56.0,frpc 就必须也是 v0.56.0;哪怕只是 v0.56.0 和 v0.56.1,启动时不会报错,但日志里只显示 login to server failed: dial tcp x.x.x.x:7000,然后反复重连。这不是连接超时,是协议握手直接被拒绝。

实操建议:

  • 从 GitHub releases 页面 下载同一版本的压缩包,解压后分别取 frps + frps.ini 放服务端,frpc + frpc.ini 放客户端
  • 别用包管理器(如 apt/yum)装,官方不提供稳定源,容易混入旧版
  • 验证方式:在两台机器上分别执行 ./frps -v 和 ./frpc -v,输出必须一字不差

serverAddr 必须填公网 IP,不能填域名

即使你绑了 frp.example.com 并做了 DNS 解析,frpc 启动时默认调用 getaddrinfo(),在 OpenWrt、树莓派旧系统或某些容器环境里极易失败,报错 lookup frp.example.com: no such host。这不是 DNS 设置问题,是 frpc 本身不走系统缓存,也不支持自动重试。

实操建议:

  • frpc.ini 中写死 server_addr = "203.123.45.67",别加 http:// 或端口
  • 如果 VPS IP 是动态的(比如家庭宽带做服务端),frp 原生不支持自动更新配置,得额外写脚本抓 IP + 替换 frpc.ini + kill -HUP 进程,复杂度远超预期
  • 云服务器 IP 固定的话,顺手在安全组放行 bind_port(默认 7000),否则 telnet 都不通,配再对也没用

SSH 穿透必须用 type = "tcp",remotePort 和 localPort 别搞反

很多人以为 type = "ssh" 是合法值,其实 frp 没这个类型,填了会静默忽略整个 proxy 段;还有人把 local_port 写成和 remote_port 一样(比如都写 60022),结果外网连 VPS 的 60022,流量根本到不了家里那台机器的 22 端口。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载

实操建议:

  • frpc.ini 里加一段:
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 60022
  • frps.ini 中确保 allow_ports = 60000-60999(或包含 60022)
  • 启动后,在外网执行 ssh -p 60022 user@203.123.45.67,不是连你家 IP
  • 别忘了检查家里服务器的 SSH 是否监听 0.0.0.0:22(而非仅 127.0.0.1:22),否则 frpc 拿不到连接

auth.token 字节级一致,空格和换行都不能多

token 不匹配不会报明确错误,frpc 日志只会显示 connection refused,而 frps 日志几乎无记录。最坑的是:你复制粘贴时可能带了不可见字符,或者 Windows 编辑器保存了 BOM 头,Linux 上读出来就是乱码。

实操建议:

  • 用 echo -n "your_token_here" | sha256sum 在服务端和客户端分别算一次哈希,必须完全一致
  • 编辑配置文件统一用 vim 或 nano,别用带格式的文本编辑器(如 VS Code 默认可能加 BOM)
  • token 建议全小写字母+数字,避开 +、=、空格等易出错字符

真正卡住人的从来不是“怎么配”,而是“哪一行悄悄错了”。四个硬性条件——版本、IP、端口、token——只要一个不对,frp 就拒绝握手,且不告诉你具体原因。盯着日志里的 login to server failed 反复改配置,不如先跑一遍这四条核对清单。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4230

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3573

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2813

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6870

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6522

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3753

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3245

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3479

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习