```
下载地址:
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz


下面两个是配置好了服务端与客户端的frp


1：准备
一台公网服务器（配置无要求网络稳定就行），服务器端，如公网IP：121.41.4.166。
内网客户端（准备要穿透出去的设备），客户端，如内网IP：192.168.10.195。

2：下载解压安装包
gitlab地址：GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.，可以在 Release 页面中下载到最新版本的客户端和服务端二进制文件，所有文件被打包在一个压缩包中。
这里使用的是上面的 frp.tar.gz

上传服务器，进入文件夹，有两个名称文件frpc（c结尾代表client）和frps（s结尾代表server），分别是服务端程序和服务端配置程序。
需要将frpc拷贝至客户端，即内网服务器，或者在客户端直接下载也可以，客户端只需要使用frpc文件即可。




配置服务器端和客户端，及启动
1：配置服务器端
这里是为服务端配置frp 只关注frps和frps.ini即可，原始最简单配置为。
[root@iZbp126fstzhkzq3ifwcmrZ frp]# cat frps.ini
[common]
#隧道通道，服务器和客户端通过此端口通讯
bind_port = 7000
#客户端需要设置一样的token值才能鉴权通过
token = usky2025
最简单也可以直接使用，先不配置其他测试使用先。

2：配置客户端
只关注frpc和frpc.ini即可，修改frpc.ini。
[root@localhost frp]# vim frpc.ini
原始配置已经有ssh的端口配置，所以修改server_addr为服务器IP即可。

[common]
server_addr = 121.41.4.166
server_port = 7000
#token和服务器一致
token = usky2025

[ssh]
type = tcp
#本机IP
local_ip = 127.0.0.1
#本机需要映射的端口22(此端口为ssh端口，WSL2有可能设置为2222或其他端口，这里需要注意)
local_port = 22
#远程服务器映射的端口为6715
remote_port = 6715

3：分别启动服务器端和客户端
注：服务器，如有防火墙，请开启7000端口和有需要的端口。
服务器运行启动：
[root@iZbp126fstzhkzq3ifwcmrZ frp]# ./frps -c frps.ini
客户端运行启动：
[root@localhost frp]# ./frpc -c frpc.ini

可以看到提示，都已经启动成功



测试ssh连接，这里用第三方工具xshell测试。
连接IP 为公网IP地址，端口为6715端口。
连接登录，即可登录到内网的192.168.10.195机器。
最简单的ssh端口映射就完成了。

升级配置
原始配置简单，但是如果需要其他功能，可自行添加，如下：
1：服务器端配置
[root@iZbp126fstzhkzq3ifwcmrZ frp]# vim frps.ini
修改如下
[common]
#隧道通道，服务器和客户端通过此端口通讯
bind_port = 7000
#客户端需要设置一样的token值才能鉴权通过
token = usky2025

#http服务端口
vhost_http_port = 8080
#https服务端口
vhost_https_port = 8443
# dashboard网页管理界面，以及设置账户密码(非必须，未配置则直接进入)
dashboard_port = 7500
dashboard_user = usky
dashboard_pwd = usky#2025Yt

2：客户端配置
[root@localhost frp]# vim frpc.ini
修改如下
[common]
server_addr = 121.41.4.166
server_port = 7000
#token和服务器一致
token = usky2025

[ssh]
type = tcp
#本机IP
local_ip = 127.0.0.1
#本机需要映射的端口22(此端口为ssh端口，WSL2有可能设置为2222或其他端口，这里需要注意)
local_port = 22
#远程服务器映射的端口为6715
remote_port = 6715

[crm-web]
type = tcp
local_ip = 127.0.0.1
local_port = 8443
remote_port = 9080

[crm-h5]
type = tcp
local_ip = 127.0.0.1
local_port = 8080
remote_port = 9081

#[web]
#type = http
#本地http服务端口，默认80，按需配置
#local_port = 80
# 绑定域名，注：配置http，必须需要域名，否则报错。如没有，可采用普通的tcp模式映射。
#custom_domains = xxx


3：启动测试
分别启动客户端和服务器端
服务器运行启动：
[root@iZbp126fstzhkzq3ifwcmrZ frp]# sh start.sh    
#脚本中是：nohup ./frps -c ./frps.ini >> frps.log  2>&1 &
客户端运行启动：
[root@localhost frp]# ./frpc -c frpc.ini
#脚本中是：nohup ./frpc -c ./frpc.ini >> frpc.log  2>&1 &



浏览器打开web管理界面，http://121.41.4.166:7500/，输入账户密码，可查看端口映射相关情况。

同时访问：http://121.41.4.166:9080，即可访问跳转到到内网192.168.10.195机器的http服务。


设置frp开机自启动
1、服务端配置frps.ini
在/etc/systemd/system/目录下创建服务文件
[root@iZbp126fstzhkzq3ifwcmrZ frp]# pwd
/data/frp
[root@iZbp126fstzhkzq3ifwcmrZ frp]# cd /etc/systemd/system/
[root@iZbp126fstzhkzq3ifwcmrZ system]# vim frps.service
填入以下信息，ExecStart自行替换为你自己的frp启动命令
[Unit]
Description=frps        #客户端请修改为frpc
After=network.target
Wants=network.target

[Service]
Restart=on-failure
RestartSec=5
ExecStart=/data/frp/frps -c /data/frp/frps.ini    #客户端请修改正确路径并使用frpc

[Install]
WantedBy=multi-user.target


[root@iZbp126fstzhkzq3ifwcmrZ system]# systemctl daemon-reload
[root@iZbp126fstzhkzq3ifwcmrZ system]# systemctl status frps.service 
● frps.service - frps
   Loaded: loaded (/etc/systemd/system/frps.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

# 因为之前是直接命令启动的，先杀死之前启动的frp，然后再命令启动


2、客户端配置frpc.ini
客户端同样在/etc/systemd/system/目录下创建服务文件

下面是一些常用的systemctl命令
# 刷新服务列表
systemctl daemon-reload
# 启动服务
systemctl start frps.service
# 停止服务
systemctl stop frps.service
# 重启服务
systemctl restart frps.service
# 查看服务状态
systemctl status frps.service

# 设置开机自启
systemctl enable frps.service
# 查看是否设置开机自启
systemctl is-enabled frps.service
# 关闭开机自启
systemctl disable frps.service
```
