这几天在折腾电脑的远程,因为总怕突然单位有啥突发的事儿嘛,然后自己电脑上又没有环境,然后就惦着直接能够遥控给主板上电直接开机并且远程。

这个主板上电直接开机倒是挺好办的,主板设置里就有,设置一个上电自动开机,然后 买一个智能插座就全搞定了。

但是我发现一个问题,开机了是开机了,但是向日葵之类的远程软件是需要在用户登陆时才会启动服务的。

那我电脑有密码呢,我又不想取消掉密码,这咋整呢。

想了一会,感觉微软自己的mstsc也许可以,但是单位的个人工作电脑并没有公网ip,那外网远程连接不是就寄了?

得,弄个内网穿透吧。

伤情最是晚凉天,憔悴斯人不堪怜,邀酒摧肠三杯醉,寻香惊梦五更寒,钗头凤斜卿有泪,荼蘼花了我无缘,小楼寂寞新雨月,也难如勾也难圆

定场诗。

我写代码的能卖你生定场诗?

咱废话就不多说了——这废话就不少了,直接书归正文儿吧。

提前注释:了解Linux守护进程而且不需要的直接跳到三就完事儿

一、NodeJS

为啥写Frp要写NodeJS?

因为frp在linux上运行的时候是一个前台应用。只要你打开这个应用的bash一退出,欸,他就没了\~所以我主要是为了弄个pm2作为这个frp的守护进程,让frp作为nohup应用启动,防止自己退出了就。

这里以CentOS 7为例:

咱首先确定一下咱们有C++的编译器,一会儿下了源码要编译用:

yum -y install gcc gcc-c++ kernel-devel
````

(我用的是8.11.3版本,当前lts版本为16.13.2,要安装的话需要升级GCC,升级太麻烦了我懒得升级反正就是用一个npm,如果升级GCC安装新版本可以看这个:[https://blog.l54l.com/Linux/116.html](https://)

然后下载NodeJS的源码压缩包:

wget https://nodejs.org/dist/v8.11.3/node-v8.11.3.tar.gz


下载完以后咱就是说直接一个解压缩:

```
tar -xzf node-v8.11.3.tar.gz
```

  接着删除压缩包(不删也行),进入新解压的文件夹,编译之:

```
#删除当前压缩包
rm node-v8.11.3.tar.gz
#进入新解压的文件夹
cd node-v8.11.3
#编译
./configure 
make
```

这步时间有点久,我们可以去给鱼缸换个水,给猫洗个澡,然后把手从乌龟嘴里拽出来...

好不容易把手指头扯出来了,我们去贴个创可贴,回来看看基本差不多完成了。

继续,使用编译出来的文件进行安装(这个快):

```
make install
```

  尝试查看当前是否安装成功:

```
npm -v
#5.6.0
```

  嘚,nice。

### 二、安装pm2

咱就是说,有了npm以后安装pm2分分钟的事儿:

```
npm install pm2 -g
```

  然后可以将pm2设置为开机启动,不过这个设不设置都行,看个人:

```
#设置开机启动
pm2 startup
#取消开机启动
pm2 unstartup
```

  使用pm2打开应用的方式:

```
#启动应用
pm2 start "启动命令" --name 设定应用名称
#保存当前应用列表
pm2 save
#查看应用日志
pm2 log
```

### 三、Frp

废话这么多终于入了正题儿了...

咱可以先去https://github.com/fatedier/frp/releases看看,当前版本啥的...

另外,linux和windows配置大同小异(其实根本就没区别=-=),我就按照我这边之前弄的方式说了啊,服务端linux,客户端windows(谁还记得我是为了啥弄这玩意儿的)

linux下载:

```
  wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
```

  下载完成以后依旧是解压:

```
tar -xzf frp_0.38.0_linux_amd64.tar.gz
mv frp_0.38.0_linux_amd64.tar.gz
```

我们这边用的是服务端,所以调整frps.ini:

```
cd frp_0.38.0_linux_amd64
vim frps.ini
```

  参数在这边:

```
[common]
#服务端端口
bind_port = <端口>
#ipv4过滤
bind_addr = <允许通过的ipv4地址,不拦截默认0.0.0.0>

#客户端连接认证方式
authentication_method = token
token = <你自己设置的token>

#网页控制台相关
dashboard_port = <控制台端口>
dashboard_user = <控制台登陆用户名>
dashboard_pwd = <控制台登陆密码>
```

  另外,因为这些东西都是明文保存在服务器上的,所以个人建议密码和token不要用其他平台的常用密码或者是通过某些加密算法先过一遍

  然后启动,服务器这边的设置就可以啦!

  **记得打开防火墙!!!**

```
#单纯的打开
./frps -c ./frps.ini
#使用pm2
pm2 start "./frps -c ./frps.ini" --name FrpServer
```

  客户端这边也差不多,去https://github.com/fatedier/frp/releases下载**frp\_0.38.0\_windows\_amd64.zip,下载完以后解压,打开文件夹里面的frpc.ini**

```
[common]
server_addr = <服务器公网ip>
server_port = <服务器端口>
authentication_method = token
token = <刚才服务器上设置的token>

[RDP]
#比如,我这边弄的是远程所以local_port是3389
#type还有http,udp,https之类的东西
type = tcp
local_ip = 127.0.0.1
local_port = <本地要被映射的端口>
remote_port = <服务器的映射的端口>
```

启动的话就在当前文件夹打开cmd,输入:

```
frpc -c frpc.ini
```

然后我的话这边是直接扔到计划任务里去执行的,不知道在哪儿的可以按win+r打开运行输入:

```
%windir%\System32\compmgmt.msc
```

然后找左边的计算机管理->系统工具->任务计划程序->任务计划程序库:

![](https://blog.l54l.com/usr/uploads/2024/11/257238819.png)

点击右边的创建任务:

  在常规选项卡选择“不管用户是否登录都要运行”,并勾选“使用最高权限运行”;

  在触发器选项卡新建,在弹出窗口的“开始任务”中选择“启动时”;

  在操作选项卡新建,在”程序和脚本“中选择刚才frpc.ini所在文件夹下的frpc.exe, ”添加参数“输入 -c frpc.ini,”起始于“中输入刚才frpc.ini所在文件夹

最后确定就可以啦!

最后重启电脑,在浏览器输入[服务器公网ip:端口号](%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%85%AC%E7%BD%91ip:%E7%AB%AF%E5%8F%A3%E5%8F%B7),并输入刚才在服务器端设置的dashboard账号密码:

![](https://blog.l54l.com/usr/uploads/2024/11/3145141894.png)

  在主页可以看到ClientCounts和ProxyCounts为1

  我滴任务,完成老!
最后修改:2024 年 11 月 09 日
如果觉得我的文章对你有用,请随意赞赏