远程调试frp

作者: Creator_Ly | 来源:发表于2021-09-23 11:49 被阅读0次

    嵌入式设备上线之后,如果遇到问题想要线上维护,最直接的方法的能够远程ssh进入到设备里,然后查看日志定位问题,这边介绍使用frp配合mqtt的方式进行设备远程调试。

    1.远程调试原理

    远程调试的原理如下:

    • 本地网关与MQTT服务器保持长连接,用来接收开启远程/关闭远程命令
    • fprs服务器需要有公网IP,开发人员可以通过该公网IP和指定的端口远程
    • 开发人员通过约定好的MQTT消息,发送开启远程命令给本地网关。本地网关收到开启远程的命令后,就启动frpc去连接对应的frps服务器。
    • 本地网关frpc连接frps成功之后,开发人员就可以内网穿透ssh到本地网关
    image.png

    2.frps服务器搭建

    2.1 下载

    不需要编译,可以直接用

    https://github.com/fatedier/frp/releases
    

    从github上面下载对应平台的压缩包,是go语音写的不需要编译。

    ubuntu:~/Desktop/frp_0.36.2_linux_arm$ ls
    frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd
    
    • frps为服务器
    • frps.ini为服务器的配置文件,frps_full.ini全部的配置信息
    • frpc为客户端
    • frpc.ini为客户端的配置文件,frpc_full.ini全部的配置信息
    2.2 服务器配置

    一般会被指两个参数

    • bind_port服务器绑定的地址
    • dashboard服务器的后台管理页面地址
    [common]
    bind_port = 1000
    
    dashboard_user = admin
    dashboard_pwd = admin
    dashboard_port = 1001
    enable_prometheus = true
    

    设置好内容后,运行如下命令就可以

    /usr/local/bin/frps -c /etc/frp/frps.ini
    

    看板内容如下:


    image.png
    2.3 服务器添加自启动
    # 需要先 cd 到 frp 解压目录.
    
    # 复制文件
    cp frps /usr/local/bin/frps
    mkdir /etc/frp
    cp frps.ini /etc/frp/frps.ini
    
    # 编写 frp service 文件,以 ubuntu 为例
    vim /usr/lib/systemd/system/frps.service (有时候需要手动创建system文件夹)
    # 内容如下
    [Unit]
    Description=frps
    After=network.target
    
    [Service]
    TimeoutStartSec=30
    ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
    ExecStop=/bin/kill $MAINPID
    
    [Install]
    WantedBy=multi-user.target
    

    启动 frp 并设置开机启动

    systemctl enable frps
    systemctl start frps
    systemctl status frps
    

    部分服务器上,可能需要加 .service 后缀来操作,即:

    systemctl enable frps.service
    systemctl start frps.service
    systemctl status frps.service
    

    停止frps

    systemctl stop frps
    

    运行状态和日志

    [root@VM-11-12-centos frp_0.35.1_linux_amd64]# systemctl status frps
    ● frps.service - frps
       Loaded: loaded (/usr/lib/systemd/system/frps.service; enabled; vendor preset: disabled)
       Active: active (running) since Tue 2021-02-23 14:07:27 CST; 1min 8s ago
      Process: 18791 ExecStop=/bin/kill $MAINPID (code=exited, status=0/SUCCESS)
     Main PID: 12498 (frps)
       CGroup: /system.slice/frps.service
               └─12498 /usr/local/bin/frps -c /etc/frp/frps.ini
    
    

    3.frpc客户端搭建

    3.1 客户端配置

    使用的就是上面下载的frpc客户端和frpc.ini配置文件

    如下配置,就是将本地的ssh 22端口,映射到frps公网IP的1002端口

    root@zihome:/# cat /tmp/frpc.ini
    [common]
    server_addr = 公网IP
    server_port = 1000
    
    
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    authentication_timeout = 0
    remote_port = 1002
    

    设置好内容后,运行如下命令就可以

    frpc -c /tmp/frpc.ini
    

    然后就可以远程登录了

    ssh -p 1002 root@公网IP
    

    官网:

    https://github.com/fatedier/frp.git

    https://github.com/kuoruan/openwrt-frp.git

    相关文章

      网友评论

        本文标题:远程调试frp

        本文链接:https://www.haomeiwen.com/subject/ozangltx.html