远程桌面是很多人办公和运维的刚需,但无论是家里的Windows电脑还是公司的内网机器,绝大多数都没有公网IP,从外部网络直接连接根本走不通。frp(Fast Reverse Proxy)是一款优秀的开源内网穿透工具,只需要一台有公网IP的Ubuntu云服务器作为中转,就能把内网的3389远程桌面端口映射到公网上,让你在任何地方都能连回自己的电脑。本文完整演示Ubuntu部署frp服务端frps和Windows配置客户端frpc的全过程。

一、frp的工作原理与前期准备
frp采用客户端与服务端分离的架构。服务端frps运行在拥有公网IP的Ubuntu服务器上,负责监听公网端口、接收外部请求;客户端frpc运行在内网的Windows电脑上,主动与frps建立连接。当外部用户访问服务器的映射端口时,frps把流量通过这条已建立的通道转发给frpc,再由frpc送达本地的3389远程桌面端口,整个过程对用户来说就像直接连接了内网机器。
开始部署前需要准备三样东西:一台有公网IP的Ubuntu服务器(阿里云、腾讯云等都可以)、一台开启远程桌面的Windows专业版电脑,以及下载好对应系统架构的frp安装包。可以在Ubuntu上执行uname -m确认架构,输出x86_64就下载amd64版本,输出aarch64则下载arm64版本。
二、Ubuntu服务器端frps的安装与配置
登录Ubuntu服务器后,先下载并解压frp。以amd64版本为例,执行以下命令:
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz tar -zxvf frp_0.61.1_linux_amd64.tar.gz cd frp_0.61.1_linux_amd64 sudo mkdir -p /etc/frp sudo cp frps frps.toml /etc/frp/ sudo chmod +x /etc/frp/frps</code>
接着编辑配置文件/etc/frp/frps.toml。新版本的frp使用toml格式,核心配置非常简洁:
bindPort = 7000 auth.token = "这里换成你自己的复杂密码" # 可选:开启web管理面板 webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "面板密码"
bindPort是frps与frpc通信的端口,auth.token是连接凭证,务必设置得足够复杂,防止被他人恶意接入。为了方便观察流量情况,可以开启webServer管理面板,部署完成后通过http://服务器IP:7500访问。配置完成后,先在前台运行/etc/frp/frps -c /etc/frp/frps.toml测试,如果没有报错,说明服务端配置正确。
配置systemd实现开机自启
手动运行frps在服务器重启后会失效,建议配置成系统服务。创建/etc/systemd/system/frps.service文件:
[Unit] Description=frp server service After=network.target [Service] Type=simple ExecStart=/etc/frp/frps -c /etc/frp/frps.toml Restart=on-failure RestartSec=5s [Install] WantedBy=multi-user.target
保存后依次执行sudo systemctl daemon-reload、sudo systemctl enable frps和sudo systemctl start frps,之后frps就会开机自动运行。可以用sudo systemctl status frps查看运行状态。另外别忘了在云服务器的安全组中放行7000端口(frp通信)、7500端口(管理面板)以及后面要用到的远程桌面映射端口,例如6000。
三、Windows客户端frpc的配置与远程桌面测试
到frp的发布页下载windows_amd64版本的压缩包,解压到例如C:\frp目录。在该目录下新建或编辑frpc.toml文件:
serverAddr = "你的Ubuntu服务器公网IP" serverPort = 7000 auth.token = "与服务端一致的密码" [[proxies]] name = "rdp" type = "tcp" localIP = "127.0.0.1" localPort = 3389 remotePort = 6000
这段配置的含义是:把本机的3389端口映射到服务器的6000端口。之后在任何外网机器上打开远程桌面连接,地址填写“服务器IP:6000”,输入Windows的账号密码即可连入内网电脑。运行客户端有两种方式,一种是在命令行中执行C:\frp\frpc.exe -c C:\frp\frpc.toml,看到login to server success字样即表示连接成功;另一种是使用解压包自带的图形管理器,双击运行后界面中的状态全部为绿色对勾,说明服务端与客户端都已就绪。
为了让客户端开机自动运行,可以把frpc注册成Windows服务。借助nssm工具,执行nssm install frpc C:\frp\frpc.exe -c C:\frp\frpc.toml,然后在服务列表中启动frpc服务并设为自动,这样每次开机都会自动建立穿透通道,无需手动干预。
四、常见问题排查与安全加固建议
部署过程中最常见的问题是连接失败。排查时按顺序检查几点:第一,云服务器安全组和Ubuntu自带的ufw防火墙是否放行了相应端口,可用sudo ufw allow 7000和sudo ufw allow 6000放行;第二,frpc日志中若提示token错误,检查两端的auth.token是否完全一致;第三,远程桌面连接后黑屏或被拒绝,多半是Windows没有开启远程桌面功能,需要在“系统属性”的“远程”选项卡中勾选允许远程连接,且Windows家庭版不支持远程桌面服务端,需要专业版以上系统。
安全方面还有几条建议。公网上的frp服务随时可能被扫描,务必使用强token;管理面板的7500端口建议用完即关,或限制访问来源;映射端口6000如果只给自己使用,可以在安全组中把来源限制为自己的常用IP段;条件允许的话,为服务器配置域名和证书,通过stcp类型代理配合加密访问,避免RDP流量明文暴露。此外建议给Windows账户设置强密码并开启账户锁定策略,防止端口暴露后遭遇暴力破解。
完成以上配置后,你就拥有了一条稳定的远程访问通道。frp除了远程桌面,还支持http、https、stcp、udp等多种代理类型,同样可以用来访问内网的Web服务、NAS或开发环境,是一个非常值得掌握的内网穿透利器。
frp内网穿透frp远程桌面Ubuntu部署frp修改时间:2026-09-09 12:34:48