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服务状态
客户端配置
报病毒无法下载请在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安全中心 病毒和威胁防护 把整个文件夹添加到排除项
运行成功后可以在服务器仪表盘看到
配置开机自启动
使用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) 服务设置重启
到此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>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 启动注册表编辑器
15是60帧 8是120帧
开启显卡加速以及H264编码
启动组策略编辑器 (Win + R 运行 gpedit.msc)
依次找到 计算机配置
-> 管理模板
-> Windows 组件
-> 远程桌面服务
-> 远程桌面会话主机
-> 远程会话环境
配置将硬件图形适配器应用于所有远程桌面服务会话
和配置远程桌面连接的 H.264/AVC 硬件编码
设为启用