Epiphyllum

frp 远程桌面

2025-03-29

frp 内网穿透配置ssh 和 远程桌面#

本文章使用frp0.61.2 配置内网穿透,需要有自己的公网ip(本人使用阿里云服务器),配置Mac 远连内网windows电脑

服务端配置#

在服务器下载解压frp

curl -OL https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_linux_amd64.tar.gz
tar -zxvf frp_0.61.2_linux_amd64.tar.gz

补充说明 解压参数

  • x 解压
  • z 处理 gzip 压缩(.gz
  • v 显示进度
  • f 指定文件名 (注意 f 后要紧接文件名)

接下来配置文件 更多详细配置参考官方中文文档 文档 | frp

frps.toml

#服务器端口 默认7000 如果是阿里云服务器要放开安全组
bindPort = 7000
# 网页仪表盘 端口
webServer.port = 7500
# 网页登录账号密码默认admin admin
webServer.user = "admin"
webServer.password = "admin"

#服务端和客户端验证方式
auth.method = "token"
auth.token = "xxxxxxxx"
#log文件路径
log.to = "./frps.log"
# log级别 可选值为 trace, debug, info, warn, error,默认级别为 info
log.level = "info"
# 保存三天
log.maxDays = 3
# 允许客户端设置的最大连接池大小,如果客户端配置的值大于此值,会被强制修改为最大值,默认为 5
transport.maxPoolCount = 5
WARNING

注意tcp 会暴露端口,如果ssh密码过于简单,可能会被攻破,建议配置免密登录

运行

./frps -c ./frps.toml

配置开机自启动#

如果要开机自启, 新建frps为系统服务

vim /etc/systemd/system/frps.service

编辑

[Unit]
Description=frps
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/frps/frps -c /usr/local/frps/frps.toml   #填写frps的安装目录
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload #这将重新加载所有服务的配置文件
sudo systemctl daemon-reload [service-name] #重载特定的文件
systemctl enable frps   #开启开机自启动frps服务
systemctl disable frps   #关闭开机自启动frps服务
systemctl start frps   #启动frps服务
systemctl stop frps   #停止frps服务
systemctl status frps   #查看frps服务状态

客户端配置#

下载 frp_0.61.2_windows_amd64

报病毒无法下载请在windows安全中心加入白名单

配置 frpc.toml

# 服务器ip地址
serverAddr = " . . . "
# 服务器端口
serverPort = 7000
# 认证方式
auth.method = "token"
auth.token = "xxxxxxxxxxx"
#第一次登陆失败后是否退出,默认为 true。
loginFailExit = false

[[proxies]]
#服务名字
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
#服务器上对于的端口 记得放开安全组
remotePort = 6000

[[proxies]]
#服务名字
name = "stcp_rdp"
type = "stcp"
localPort = 3389
localIP = "127.0.0.1"
#stcp/xtcp 不暴露端口通过两个客户端的key验证
secretKey = "xxxx"
#压缩传输文件
transport.useCompression = true

[[proxies]]
name = "xtcp_rdp"
type = "xtcp"
localPort = 3389
localIP = "127.0.0.1"
secretKey = "xxxx"
transport.useCompression = true

运行程序

./frpc.exe -c ./frpc.toml

如果无法运行报错

ResourceUnavailable: Program 'frpc.exe' failed to run: An error occurred trying to start process 'D:\coding\git\frp_0.61.2_windows_amd64\frpc.exe' with working directory 'D:\coding\git\frp_0.61.2_windows_amd64'. 拒绝访问。At line:1 char:1
+ ./frpc.exe -c ./frpc.toml

在windows安全中心 病毒和威胁防护 把整个文件夹添加到排除项

运行成功后可以在服务器仪表盘看到

image-20250329201909317

配置开机自启动#

使用winsw 安装服务

下载 WinSW.exe

下载示例的配置文件 sample-allOptions.xml

拷贝到frp 所在的文件夹 重命名为frpc-winsw.exe frpc-winsw.xml

修改frpc-winsw.xml 主要配置这几项其他看需求,

<service>
  <!-- service id 应该具有唯一 -->
  <id>frp</id>
  <!-- 显示的service 名字 -->
  <name>frp (powered by WinSW)</name>
  <!-- 描述 -->
  <description>内网穿透</description>
  <!-- %BASE% 表示winsw.exe 所在的文件夹 -->
  <executable>%BASE%\frpc.exe</executable>
  <!-- 参数 -->
  <arguments>-c %BASE%\frpc.toml</arguments>
</service>

然后安装服务

./frpc-winsw.exe install

更多指令

install	#安装服务
uninstall	#卸载服务
start	#启动服务
stop	#停止服务
restart	#重启服务
status	# 检查状态
refresh	# 刷新服务但是不是重新安装

之后在windows的服务里就能找到 Win + R 运行services.msc 找到 frp (powered by WinSW) 服务设置重启

image-20250329204205173

到此windows客户端就配置好了

客户端 访问者 Mac#

下载解压frp (这里m芯片arm架构)

curl -OL https://github.com/fatedier/frp/releases/download/v0.61.2/frp_0.61.2_darwin_arm64.tar.gz

解压

tar -zxvf frp_0.61.2_darwin_arm64.tar.gz

配置frpc.toml

# 服务器ip地址
serverAddr = " . . . "
serverPort = 7000
# 认证方式token
auth.method = "token"
auth.token = "xxxxxx"
# 第一次登录失败不退出
loginFailExit = false
[[visitors]]
#服务名字
name = "stcp-rdp-visitor"
type = "stcp"
#要连接的服务名字
serverName = "stcp_rdp"
#只有key 一样才能连接上
secretKey = "xxxxxxx"
# 监听的本地地址
bindAddr = "127.0.0.1"
# visitor 监听的本地端口,如果为 -1,表示不需要监听物理端口,通常可以用于作为其他 visitor 的 fallback
bindPort = -1
# 压缩传输文件
transport.useCompression = true

[[visitors]]
#服务名字
name = "xtcp-rdp-visitor"
type = "xtcp"
#要连接的服务名字
serverName = "xtcp_rdp"
secretKey = "xxxxxx"
# 监听的本地地址
bindAddr = "127.0.0.1"
# 绑定到本地端口23389
bindPort = 23389
# 压缩传输文件
transport.useCompression = true
#是否保持隧道打开,如果开启,会定期检查隧道状态并尝试保持打开
keepTunnelOpen = true
# 回退到的其他 visitor 名称。
fallbackTo = "stcp-rdp-visitor"
# 连接建立超过多长时间(ms) 后回退到其他 visitor
fallbackTimeoutMs = 2000

运行

./frpc -c ./frpc.toml

使用windows App 在App Store 中可以下载

远程连接 电脑名称填127.0.0.1<23389>

建议开打针对Retina显示优化 可以显示更加清楚

配置开机自启动#

利用Mac系统的launchctl实现开机自启

launchctl 是根据plist文件的信息来启动任务的,所以我们要新加一个frp的plist

mac系统一般提供两种自启方式,1.是跟随系统启动就开始运行,无论用户有没有登陆账号。2.只有用户登陆了账号进入桌面才开始自动运行

  • /Library/LaunchDaemons -->只要系统启动,无论用户有没有登陆系统也会被执行
  • /Library/LaunchAgents -->只有用户登陆系统后才会被执行

其他一些不同文件夹有不同的含义,权限依次升高,权限越大风险越大

TIP

/Library/LaunchAgents 由用户自己定义的任务项

/Library/LaunchAgents 由管理员为用户定义的任务项

/Library/LaunchDaemons 由管理员定义的守护进程任务项

/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项

/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项

这里选择了权限较小的/Library/LaunchAgents,用户登录之后才自动运行,如果想要电脑启动就能远程访问请选择/Library/LaunchDaemons文件夹下创建plist文件

sudo vim ~/Library/LaunchAgents/frpc.plist

填写

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
	<dict>
		<key>Label</key>
		<string>frpc</string>
		<key>ProgramArguments</key>
		<array>
			<string>/Users/xxxx/coding/git/frp_0.61.2/frpc</string>
			<string>-c</string>
			<string>/Users/xxxx/coding/git/frp_0.61.2/frpc.toml</string>
		</array>
		<key>KeepAlive</key>
		<true/>
		<key>RunAtLoad</key>
		<true/>
	</dict>
</plist>
NOTE

其中/Users/xxxx/coding/git/frp_0.61.2/frpc 和 /Users/xxxx/coding/git/frp_0.61.2/frpc.toml替换为自己的路径

不能使用相对路径

给frpc.plst赋权和加载任务

sudo chown root ~/Library/LaunchAgents/frpc.plist
launchctl load -w ~/Library/LaunchAgents/frpc.plist
launchctl start frpc

Launchctl 常用命令

# 加载任务, -w 会将plist文件中无效的key覆盖掉,建议加上
launchctl load -w frpc

# 删除任务
launchctl unload -w frpc

# 查看任务列表, 使用 grep '任务部分名字' 过滤
launchctl list | grep 'frpc'

# 开始任务
launchctl start  frpc

# 结束任务
launchctl stop   frpc

Windows 远程桌面配置#

windows 专业版才有远程被控

打开设置把远程桌面打开

配置60帧#

官方文档 远程会话中的帧速率限制为 30 FPS - Windows Server | Microsoft Learn

具体来说就是 Win + R 运行regedit 启动注册表编辑器

image-20250329212451632

15是60帧 8是120帧

开启显卡加速以及H264编码#

启动组策略编辑器 (Win + R 运行 gpedit.msc)

依次找到 计算机配置 -> 管理模板 -> Windows 组件 -> 远程桌面服务 -> 远程桌面会话主机 -> 远程会话环境

配置将硬件图形适配器应用于所有远程桌面服务会话配置远程桌面连接的 H.264/AVC 硬件编码设为启用

image-20250329213520106

frp 远程桌面
https://epiphyllum.masttf.fun/post/frp
作者
Masttf
发布于
3/29/2025
许可协议
CC BY-NC-SA 4.0