前言
你是否有需求,突然来了紧急需求,需要在家里远程操作公司的电脑进行加班?
不加班怎么享受福报呢?
当然以上都是瞎扯,在家里访问公司电脑,最简单的是使用远程控制软件,如Teamviewer、向日葵等,但是这都是第三方的应用,安全性没得什么保障,其次并不是很稳定,而且以上软件是监控VGA的输出,也就是你操作的时候,你的公司的屏幕也是可以被同事看到的,吓到人就不太好了,hh
最完美的方案还是windows自带的远程桌面,使用体验完美,并且不会在实际桌面输出,其弊端是公司的电脑一般都不会单独配置ip地址,无法直接连接,其次也不能调用独立显卡进行计算,不过公司的mx250拿来编译怕是要反向加速...
所以综合以上,这里我准备使用frp做内网穿透,并使用vps做端口转发,来实现在任意地点登陆公司电脑
1 准备工作
- Root权限的VPS服务器(最好是国内的服务器,速度快延迟低,连接稳定)
- 公司电脑可24h开机并联网
2 开始搭建
2.1 先配置服务器端
1.Centos下先执行命令安装wgetyum install -y wget
2.创建目录来存放frp和配置文件mkdir /home/frp && cd /home/frp
3.下载Github最新版服务器端frp
下载地址:https://github.com/fatedier/frp/releases
这里以目前最新版 v0.32.1 为例wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
4.解压文件tar -xzvf frp_0.32.1_linux_amd64.tar.gz
5.进入解压的文件夹cd frp_0.32.1_linux_amd64/
6.编辑配置文件 vi frps.ini
[common]
bind_addr = 0.0.0.0
#frp连接端口
bind_port = 7000
#frp连接密码
token = 1234567890
#面板端口
dashboard_port = 7500
#面板账号
dashboard_user = admin
#面板密码
dashboard_pwd = admin
修改完成后输入:wq
保存退出即可
具体参数可参考官方的参考文档:https://github.com/fatedier/frp/blob/master/README_zh.md
7.给脚本加上执行权限chmod +X *.sh
8.运行脚本./frps -c ./frps.ini
至此,服务端就运行成功了,不过别忘了在防火墙放行对应的端口
现在可以直接在浏览器输入服务器ip:7500
打开frp面板了
2.2 配置客户端
1.在上面的下载地址下载frp的windows版本
这里我下载的是:frp_0.32.1_windows_amd64
然后将其解压,这里我解压后为如下文件:
2.修改配置文件 frpc.ini
[common]
#服务器ip地址
server_addr = 127.0.0.1
#服务器frp连接端口
server_port = 7000
#连接密码
token = 1234567890
[ssh]
type = tcp
local_ip = 127.0.0.1
#本地转发的端口
local_port = 3389
#远程暴露的端口
remote_port = 3389
修改完毕后保存退出
3.在地址栏输入cmd在当前目录打开cmd
4.输入以下命令启动frp本地客户端,进行端口映射frpc.exe -c frpc.ini
现在就可以打开远程桌面工具来进行远程桌面连接啦~
3 远程连接
打开电脑的远程桌面工具
输入服务器ip就可以连接远程桌面辣,默认使用3389端口
虽然中间出了点小插曲 --> 因为windows家庭版阉割了远程桌面功能,不过已经想办法解决了,
详见:https://ffis.me/experience/1907.html
最终还是连接成功辣~
4 无人值守
虽然服务器端和客户端的frp都运行正常了,但是并没有加入无人值守开机自动启动
下面来给frp做个开机自动自动
4.1 服务器端的自动启动
这里我服务器系统用的CentOS7
,所以可以直接使用systemctl
去管理Frp
1、创建.service
服务文件vi /usr/lib/systemd/system/frp.service
这里需要注意 命令的路径一定要使用绝对路径
[Unit]
#服务描述
Description=Frp Server Service
#在以下服务之后启动
After=network.target
[Service]
#服务运行模式:后台模式
Type=simple
#启动服务时执行的命令
ExecStart=/data/frp/frp-server/frps -c /data/frp/frp-server/frps.ini
#表示给服务分配独立的临时空间
PrivateTmp=True
#服务运行的用户和用户组
User=root
Group=root
#非正常退出时,自动重启,用作守护进程
Restart=on-failure
[Install]
#依赖配置
WantedBy=multi-user.target
2、服务状态
#启动/关闭/重启/状态
systemctl start frp.service
systemctl stop frp.service
systemctl restart frp.service
systemctl status frp.service
#添加开机自启
systemctl enable frp.service
#关闭开机自启
systemctl disable frp.service
4.2 客户端的自动启动
1、下载
如果客户端也在centos系统可参考上面的配置方式
当然这里我是在windows下使用frp客户端,所以需要把frp添加到系统服务中
这需要用到winsw
下载地址:https://github.com/kohsuke/winsw/releases
我下载的是 WinSW.NET461.exe
将 WinSW.NET461.exe
重命名为你想要的名字,创建配置文件
这里我重命名为:winswRemote.exe
配置文件需要和winsw同名同目录
我的配置文件为:winswRemote.xml
2、配置
将frpc.exe
和frpc.ini
放到winsw
同目录,也可以使用绝对路径指定目录
参考如下配置:
<service>
<!-- 该服务的唯一标识 -->
<id>FrpRemote</id>
<!-- 该服务的名称 -->
<name>Frpc Remote Service</name>
<!-- 该服务的描述 -->
<description>Frpc客户端 远程桌面端口转发</description>
<!-- 要运行的程序路径 -->
<executable>frpc.exe</executable>
<!-- 携带的参数 -->
<arguments>-c frpc.ini</arguments>
<!-- 第一次启动失败 60秒重启 -->
<onfailure action="restart" delay="60 sec"/>
<!-- 第二次启动失败 120秒后重启 -->
<onfailure action="restart" delay="120 sec"/>
<!-- 日志模式-旋转:达到10m自动切片 -->
<logmode>rotate</logmode>
<!-- 指定日志文件目录(相对于executable配置的路径) -->
<logpath>logs</logpath>
</service>
3、安装
打开cmd,切换到winsw目录下,运行如下命令
//注册服务
winswRemote.exe install
//卸载服务
winswRemote.exe uninstall
//启动服务
winswRemote.exe start
//停止服务
winswRemote.exe stop
//重启服务
winswRemote.exe restart
//查看状态
winswRemote.exe status