fp-multiuser 是 frp 的一个服务端插件,用于支持多用户鉴权。
fp-multiuser 会以一个单独的进程运行,并接收 frps 发送过来的 HTTP 请求。
功能
- 通过配置文件配置所有支持的用户名和 Token,只允许匹配的 frpc 客户端登录。
下载
通过 Release 页面下载对应系统版本的二进制文件到本地。
使用示例
-
创建
tokens文件,内容为所有支持的用户名和 token。user1=123
user2=abc每一个用户占一行,用户名和 token 之间以
=号分隔。 -
运行 fp-multiuser,指定监听地址以及 token 存储文件路径。
./fp-multiuser -l 127.0.0.1:7200 -f ./tokens -
在 frps 的配置文件中注册插件,并启动。
INI 格式:
# frps.ini [common] bind_port = 7000 [plugin.multiuser] addr = 127.0.0.1:7200 path = /handler ops = Login
TOML 格式:
# frps.toml bindPort = 7000 [[httpPlugins]] addr = "127.0.0.1:7200" path = "/handler" ops = ["Login"] -
在 frpc 中指定用户名,在 meta 中指定 token,用户名以及
meta_token的内容需要和之前创建的 token 文件匹配。user1 的配置 INI 格式:
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 user = user1 meta_token = 123 [ssh] type = tcp local_port = 22 remote_port = 6000user1 的配置 TOML 格式:
serverAddr = "x.x.x.x" serverPort = 7000 user = "user1" metadatas.token = "123" [[proxies]] type = "tcp" localPort = 22 remotePort = 6000user2 的配置 INI 格式:
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 user = user2 meta_token = abc [ssh] type = tcp local_port = 22 remote_port = 6001user2 的配置 TOML 格式:
开机自启动
为保证 fp-multiuser 服务能够开机自启动,故需要设置一下,写入的命令如下:
vim /usr/lib/systemd/system/fp-multiuser.service [Unit] Description=A frp server plugin to support multiple users for frp After=network.target [Service] Type=simple User=nobody Group=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/local/fp-multiuser/fp-multiuser -l 127.0.0.1:7200 -f ./tokens WorkingDirectory=/usr/local/fp-multiuser/ [Install] WantedBy=multi-user.target其中,根据自己的设置可修改的字段如下:
ExecStart:启动的命令参数。User:指定守护运行的用户,上述用户为nobody用户 ;若fp-multiuser服务指定的启动端口在 1024 以下,则必须为 root 用户,字段注释或删除则默认 root 守护程序运行。Group:指定守护运行的用户组。WorkingDirectory:指定插件所工作的目录,指定后可使用相对路径参数;否则,需使用绝对路径参数。
设置完后,先设置目录的用户与用户组权限:
chown -R nobody:nobody /usr/local/fp-multiuser再
daemon-reload重载配置一下:systemctl daemon-reload再设置开机自启:
systemctl enable fp-multiuser.service启动
fp-multiuser:systemctl start fp-multiuser.service其余操作命令如下:
# 停止运行 systemctl stop fp-multiuser.service # 查看状态 systemctl status fp-multiuser.serviceserverAddr = "x.x.x.x" serverPort = 7000 user = "user2" metadatas.token = "abc" [[proxies]] type = "tcp" localPort = 22 remotePort = 6001
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











暂无评论内容