mac安装frp实现远程桌面并配置开机自启
下载软件
https://github.com/fatedier/frp/releases # 下载frp_0.44.0_darwin_amd64.tar.gz,这里下载的是Intel CPU架构的,m1或者其他系统选择对应的软件包
解压软件包,配置frpc.ini(客户端配置文件)
配置文件内容
[common]
server_addr = net.congwei.cc # frp服务端地址
server_port = 5443 # frp服务端开放端口
token = abcd1234 # 设置的验证token密码
[Remote_tcp]
type = tcp
local_ip = 127.0.0.1
local_port = 5900 # mac电脑远程桌面默认端口
remote_port = 15900 # 服务端对应端口
运行frp
终端中运行
cd /Users/xxxx/Downloads/frp_0.44.0_darwin_amd64 # 切换到frp文件夹,xxxx为当前用户的home文件夹
sudo ./frpc -c ./frpc.ini # 运行frp客户端
配置没有问题的话,此时客户端电脑就连接到服务器了
服务端frp面板也就能看到客户端已上线,但还没连接
此时就可以用其他电脑远程桌面这个配置了frp内网穿透的电脑了
mac聚焦搜索,搜 屏幕共享
输入ip和设置的端口,点击连接,大功告成
如果连不上,注意配置哪里是否有错误,以及检查服务器防火墙,端口是不是没有开放等
如果不知道怎么管理防火墙可以自己搜索或者看我其他Linux文章
设置开机自启
终端每次都要输命令运行,终端窗口还不能关,这不优雅。这里可以利用Mac系统的launchctl实现开机自启
launchctl 是根据plist文件的信息来启动任务的,所以我们要新加一个frp的plist
mac系统一般提供两种自启方式,1.是跟随系统启动就开始运行,无论用户有没有登陆账号。2.只有用户登陆了账号进入桌面才开始自动运行
-
/Library/LaunchDaemons
-->只要系统启动,无论用户有没有登陆系统也会被执行 -
/Library/LaunchAgents
-->只有用户登陆系统后才会被执行
其他一些不同文件夹有不同的含义,权限依次升高,权限越大风险越大
~/Library/LaunchAgents 由用户自己定义的任务项 /Library/LaunchAgents 由管理员为用户定义的任务项 /Library/LaunchDaemons 由管理员定义的守护进程任务项 /System/Library/LaunchAgents 由Mac OS X为用户定义的任务项 /System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项
这里选择了权限较小的~/Library/LaunchAgents
,用户登录之后才自动运行(我这里是作为ddns+端口映射的补充,以防万一),如果想要电脑启动就能远程访问请选择/Library/LaunchDaemons
文件夹下创建plist文件
sudo vim ~/Library/LaunchAgents/frpc.plist
不喜欢vim也可以,touch命令创建文件,用其他编辑器编辑
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/program/frp/frpc</string>
<string>-c</string>
<string>/Users/xxxx/program/frp/frpc.ini</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
注意
/Users/xxxx/program/frp
替换成你frp程序存放的位置。我这里是在home目录下创建了program文件夹存放
最后在终端运行命令给frpc.plist赋权,以及加载任务
sudo chown root ~/Library/LaunchAgents/frpc.plist
sudo launchctl load -w ~/Library/LaunchAgents/frpc.plist
后面一条命令可能会有个warning,不影响使用
重启电脑,进入系统可以在“活动监视器”里查看frpc进行是否在运行
如果想取消这个开机自启可以运行下面的命令
sudo launchctl unload -w ~/Library/LaunchAgents/frpc.plist
launchctl常用命令
# 加载任务, -w 会将plist文件中无效的key覆盖掉,建议加上
launchctl load -w frpc.plist
# 删除任务
launchctl unload -w frpc.plist
# 查看任务列表, 使用 grep '任务部分名字' 过滤
launchctl list | grep 'frpc'
# 开始任务
launchctl start frpc.plist
# 结束任务
launchctl stop frpc.plist
launchctl补充内容
如果运行的是sh脚本等其他需要规律运行的任务,也可以设置定时运行或者循环间隔运行
- StartInterval: 脚本每间隔多长时间(单位:秒)执行一次;
- StartCalendarInterval: 脚本在多少分钟、小时、天、星期几、月时间上执行
plist事例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- Label唯一的标识 -->
<key>Label</key>
<string>com.demo.plist</string>
<!-- 要运行的脚本 -->
<key>ProgramArguments</key>
<array>
<string>/Users/xxxx/run.sh</string>
</array>
<!-- 要运行的时间 -->
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>00</integer>
<key>Hour</key>
<integer>22</integer>
</dict>
<!-- 标准输出文件 -->
<key>StandardOutPath</key>
<string>/Users/demo/run.log</string>
<!-- 标准错误输出文件,错误日志 -->
<key>StandardErrorPath</key>
<string>/Users/demo/run.err</string>
</dict>
</plist>
plist参数说明:
Label:对应的需要保证全局唯一性;
Program:要运行的程序;
ProgramArguments:命令语句
StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array
StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒
StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件
定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的。
参考