Loading... ## 准备工作 1. VPS一台(也可以是具有公网IP的实体机) 2. 访问目标设备(就是你最终要访问的设备) 3. 简单的Linux基础(会用cp等几个简单命令即可) > 因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。 ## 服务端设置 SSH 连上 VPS 后执行以下语句: ```bash # 查看 VPS 的架构,并根据这个选择对应的 release 版本 arch # 去 github 上下载 wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz # 解压 tar -zxf frp_0.33.0_linux_amd64.tar.gz # 改名方便操作 mv frp_0.33.0_linux_amd64 frp # 这里可以将文件放到想要的地方,为了方便我就放在用户根目录 # 进入 frp 目录并查看文件 cd frp/ && ls ``` frp 里面有四个比较重要的文件: - frps - frps.ini - frpc - frpc.ini 前两个带 s (server) 的是服务端的程序和配置文件,后两个带 c (client) 的是客户端的程序和配置文件。 这里配置服务端,所以可以删除客户端的两个文件,并且编辑服务端的配置文件: ```bash rm frpc frpc.ini vim frps.ini ``` 文件默认应该有如下格式: ````ini [common] bind_port = 7000 dashboard_port = 7500 token = 12345678 dashboard_user = admin dashboard_pwd = admin vhost_http_port = 10080 vhost_https_port = 10443 ```` - “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。 - “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。 - “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。 - “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。 - “vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。 > 如果没有必要,端口均可使用默认值,token、user和password项请自行设置。 编辑完成后保存,即可运行 frp 服务器了: ```bash ./frps -c frps.ini ``` 如果看到屏显如下,则表示成功启动了: ```bash 2020/07/28 10:43:27 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000 2020/07/28 10:43:27 [I] [service.go:277] Dashboard listen on 0.0.0.0:7500 2020/07/28 10:43:27 [I] [root.go:209] start frps success ``` ### 后台运行 至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 [nohup命令](https://ehlxr.me/2017/01/18/Linux-的-nohup-命令的用法/)将其运行在后台。 ````bash nohup ./frps -c frps.ini & ```` ## 客户端配置 > frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机。这里我使用的是 arch Linux ,所以用 Linux 主机作例子。 [下载](https://github.com/fatedier/frp/releases/)和服务端同样版本的 frp : ```bash wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz ``` 之后的配置方法和服务端差不多。由于是客户端所以要保留带 c 的程序和配置文件: ```bash rm frps frps.ini vim frpc.ini ``` 默认配置文件如下: ```ini # frpc.ini [common] server_addr = x.x.x.x server_port = 7000 token = 12345678 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 ``` common 栏是服务端的基础配置,将之前服务端的地址和端口填入即可。如果之前配置了 token 也要填上。 其他的就是自定义的规则。自定义规则的格式解释如下: - “[xxx]”表示一个规则名称,自己定义,便于查询即可。 - “type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。 - “local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。 - “remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。 配置完保存即可运行: ```bash ./frpc -c frpc.ini ``` 按照上面的配置就可以实现内网的 ssh 连接了。 ## Reference https://zhuanlan.zhihu.com/p/45445979 最后修改:2021 年 05 月 24 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏