组内公共机(windows系统)采用向日葵远程连接,向日葵本身提供的免费服务速度很慢,尤其是多人同时连接时情况更颇为糟糕。于是打算利用windows本身自带的远控服务,开辟一条自己的绿色通道。
1.运行环境
服务器:阿里云ubuntu22.04 LTS
被控端:台式电脑windows10
控制端:台式电脑windows10
2.基本原理
基本原理如下图所示,图源[1]:
控制端(计算机A)向云服务器发送请求,云服务器将请求转发到被控端(计算机B)。如果计算机A和计算机B在同一局域网下,则无需公网服务器进行请求转发。这里考虑到更加通用的场景,往往这两者不在同一局域网中。

需要配置两个东西:
-
FRP内网穿透:计算机B无法直接被A访问到,配置穿透后,使A对C的请求能够顺利转发到B中,这里默认FRP通过
7000
端口通信。 -
远程控制请求:计算机A需要向公网服务器发送控制申请,此时需要通过端口进行通信,本文中端口设置为
7003
,计算机B无需设置端口,windows默认远控端口为3389
。
3.操作步骤
下面开始具体操作。
3.1 端口设置开放
首先在阿里云服务器控制台中开放端口。
阿里云服务器控制台:https://ecs.console.aliyun.com/server/i-2zeilcvb1tnjoanrzkku/group?regionId=cn-beijing#/
进入控制台,入方向,开放7000
和7003
两个端口。

在云服务器防火墙中,同步开放这两个端口,开放完重启防火墙:
c
sudo ufw allow 7000
sudo ufw allow 7003
sudo ufw reload
3.2 服务器FRP配置
首先查看服务器系统架构:
c
lscpu | grep Architecture
输出:
Architecture: x86_64
如果输出结果中包含 x86_64 或 i686,则表示系统的 CPU 架构是 AMD(或者是 x86 架构的 Intel
CPU)。如果输出结果中包含 armv7l、aarch64 或 arm64,则表示系统的 CPU 架构是 ARM[2]。
下载FRP:
c
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz
解压:
c
tar -xvzf frp_0.61.1_linux_amd64.tar.gz
进入到frp_0.61.1_linux_amd64
目录中,编辑frps.toml
配置文件:
c
vim frps.toml
内容如下:
c
bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token"
auth.token = "自己的token"
bindAddr= "0.0.0.0"
表示监听所有IP信息,bindPort=7000
即绑定7000端口,auth.token
设置自己的密码,用来FRP服务连接时验证。
修改完成后,保存,用screen
无间断启动FRP服务:
c
screen -S frps ./frps -c frps.toml
3.3 被控端FRP配置
被控端可以直接下载原生的frp:
下载链接:https://github.com/fatedier/frp/releases/tag/v0.61.1
也可以下载封装好的图形化界面frpc-desktop
:
下载链接:https://github.com/luckjiawei/frpc-desktop/releases/tag/v1.1.6
为方便起见,我这里直接下载后者。
下载完成后,首先在穿透列表
这里配置代理,信息填写如下图所示:

之后在里面下载FRP,我这里下载最新版本,注意和服务器端最好保持版本对应。

配置FRP信息,服务器地址填写自己服务器的公网IP,端口号和token和上一节设置的相对应,配置完点右上角进行保存。

最后,到首页启动FRP。如有报错,可查看具体日志信息。
配置完成后,在控制端打开windows自带的远程桌面连接

计算机名称填写公网ip:7003

最后输入用户名和密码,即可进入远控界面,并且控制端和被控端是共享剪切板的,用来直接传输一些小文件很流畅。
4. 错误原因排查
默认情况下,按照上述流程进行配置,应该不会出现问题。如出现问题,可从以下几个角度进行排查:
-
被控端FRP连接异常
直接看软件生成的日志 -
服务器端FRP异常
可通过如下语句,查看错误信息:c./frps -c frps.toml
-
被控端连接异常
可以检查远程服务是否启动,默认情况是启动的,具体到服务管理栏检查Remote Desktop Services
这个服务的启动情况。
其次可检查是否开启远控权限,具体位置在控制面板系统->允许远程访问
中。

参考
[1] 如何利用云服务搭建自己的远程连接工具
https://blog.csdn.net/qq_42108331/article/details/140397923
[2] linux 查看CPU架构是AMD还是ARM