Frp内网穿透实现MS远程桌面和SSH
本文最后更新于:July 6, 2019 pm
使用github上面的开源项目Frp和一台有公网IP的主机来实现反向代理(内网穿透),从而达到使用微软自带的远程桌面mstsc来远程没有公网IP的windows电脑和使用ssh远程Linux系统(Centos和Ubuntu)的效果。
本文不涉及反向代理的具体理论知识,使用的公网IP主机为阿里云主机(十块钱一个月的学生版),由于使用的阿里云主机带宽有限,因此使用远程桌面的效果可能比较一般,但是对于SSH远程来说肯定是足够了的。
需要注意的是,如果你的电脑本身所处的网络是有动态公网IP的,建议直接在路由器中设置DDNS,效果要比这个好很多,这个仅适用于那些没有公网IP的电脑。
1、服务端配置
首先我们对服务端的阿里云主机进行配置,当然有其他的公网IP主机都是可以的。这里使用的操作系统是CentOS7.3。
1.1 下载Frp
1 |
|
这些就是剩下的我们需要的文件,这里我们可以看到有两个ini配置文件,其中frps_full,ini
是完整的带有注释说明和所有功能的配置文件,我们把需要的简单配置摘到frps.ini
这个文件,方便我们管理配置。
1.2 编辑配置文件
接下来我们编辑配置文件启用frp的监听端口7000和监控面板dashboard的监听端口7500。
1 |
|
需要注意的是,这上面说的7000和7500端口都需要在阿里云的防火墙里面配置放行,否则会无法访问。
1.3 设置开启自动和后台运行
我们新建一个文件,将Frps注册成Linux中的服务进程。
1 |
|
2、Windows客户端配置
2.1 下载Frp
我们按照之前的下载好对应的Windows版本之后,删除掉多余的frps服务端文件,只留下对应的frpc客户端文件。
2.2 编辑配置文件
1 |
|
这里的server_port
就是我们前面的服务端配置的端口7000,local_port
则是微软自带的远程桌面mstsc的默认端口3389,remote_port
就是到时候使用mstsc远程的时候需要在这个公网IP后面加上的端口号,注意这个端口号也是需要在阿里云主机的防火墙中放行。
然后我们就可以启用frpc客户端来建立连接
1 |
|
2.3 注册Frpc为Windows服务
为了使frpc能够开启后台运行,我们需要将它注册为系统服务。
这里我们需要使用到GitHub上面的另一个项目winsw
这里我使用的是WinSW.NET4.exe
这个版本,这个需要电脑安装了.net4
才可以使用,一般win10应该都是安装了的,此外我们还要下载一个xml文件作为启动配置文件。
然后我们在对应的xml配置文件中加入下列内容
1 |
|
接着我们把这两个文件都命名为WinSW,然后放在刚刚frpc的目录下。
然后我们以管理员身份启动powershell
或者cmd
,输入下列命令
1 |
|
win+r
后通过services.msc
进入到服务列表页面找到frpc
服务。
我们打开设置,将它设置为开机启动,服务失败后一分钟自动重启服务。
到这里windows客户端的配置就已经完成了。我们在远程的时候只需要输入刚刚使用的公网IP地址加上端口号即可进行远程连接,如果有多台电脑需要进行远程,只需要给每个电脑设置一个不同的端口号即可。
3、Linux客户端配置
Linux客户端的配置和上面的服务端大同小异,只需要将frps
换为frpc
并且修改对应的配置文件即可。注意下面的操作小七在CentOS7.6和Ubuntu18.04上面都能成功实现。
3.1 下载Frp
1 |
|
3.2 编辑配置文件
1 |
|
3.3 设置开机启动和后台运行
1 |
|
3.4 错误记录
在Ubuntu上面出现了一点小意外,发现服务并没有成功启用
[control.go:142] [ssh] start error: proxy name [ssh] is already in use
提示是说ssh这个名字已经被别的服务占用了,这里我们只需要修改之前的配置文件里面的ssh为别的名字,然后重启服务即可。
最后注意这时候我们如果需要使用ssh远程需要加上-p命令来指定端口。