FRPS设置多用户鉴权

fp-multiuser 是 frp 的一个服务端插件,用于支持多用户鉴权。

fp-multiuser 会以一个单独的进程运行,并接收 frps 发送过来的 HTTP 请求。

功能

  • 通过配置文件配置所有支持的用户名和 Token,只允许匹配的 frpc 客户端登录。

下载

通过 Release 页面下载对应系统版本的二进制文件到本地。

 

使用示例

  1. 创建 tokens 文件,内容为所有支持的用户名和 token。

    user1=123
    user2=abc
     

    每一个用户占一行,用户名和 token 之间以 = 号分隔。

  2. 运行 fp-multiuser,指定监听地址以及 token 存储文件路径。

    ./fp-multiuser -l 127.0.0.1:7200 -f ./tokens

  3. 在 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"]
  4. 在 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 = 6000
    
     

    user1 的配置 TOML 格式:

    serverAddr = "x.x.x.x"
    serverPort = 7000
    user = "user1"
    metadatas.token = "123"
    
    [[proxies]]
    type = "tcp"
    localPort = 22
    remotePort = 6000

    user2 的配置 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 = 6001
    
     

    user2 的配置 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.service
     
    serverAddr = "x.x.x.x"
    serverPort = 7000
    user = "user2"
    metadatas.token = "abc"
    
    [[proxies]]
    type = "tcp"
    localPort = 22
    remotePort = 6001
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容