• 整理一下使用 Frp 实现内网穿透实现ssh或博客部署的笔记。Frp官方文档上有例子可以指导部署,看文档就可以自行完成。需要整备的工具:
    1.一台具有公网 IP 的服务器(VPS
    2.一台需要远程控制的电脑,可以是 WinLinux (这里我用我的树莓派的 Ubuntu 为例)。
    3.一台可以联网使用的电脑,当然包括舍友牌(用于测试或者配置服务器)。
    另:如果内穿博客需要一个域名,域名自行购买即可。

配置服务端

  • 服务端就是我们的具有公网 IP 的服务器,可以去阿里云或腾讯云自行购买。
  • 使用③(可以联网的 Win 电脑),通过 CMD 采用 OpenSSH (一般 Win 都自带,不用去安装其它的类似于 puttyhyper 等的 SSH 连接工具)去连接服务器,通过如下命令获取压缩包,并解压。压缩包可前往FRP仓库获取最新安装包。注:如果你的服务器下载较慢,可以先下载到你的电脑,再通过 SCP 命令(很简单,百度一下就有)将其上传到服务器也可以。
    1
    2
    wget https://github.com/fatedier/frp/releases/download/v0.60.1/frp_0.60.1_linux_amd64.tar.gz
    tar -xzf frp_0.50.0_linux_amd64.tar.gz

  • 解压后,在当前目录下会出现frp_0.50.0_linux_amd64文件夹,压缩包可以删掉了,进入文件夹,你会看到5个文件(文件夹):frpsfrps.tomlfrpcfrpc.tomlLICENCEfrpsfrps.toml是配置服务端留下, frpcfrpc.toml是配置客户端的,这里用不到可以删掉。首先将frps文件夹通过如下命令将它放移动到 /usr/local/bin/ (为什么要放入这里,因为Linux系统的这个路径下默认放程序,当然也可以放入其它路径下,但是得配置环境),最后赋予文件执行权限。

    1
    2
    sudo mv frps /usr/local/bin/
    sudo chmod +x /usr/local/bin/frps
  • 接着新建一个 frp 文件夹将 frps.toml 配置文件移动到 /etc/frp/ 路径下。

    1
    2
    sudo mkdir -p /etc/frp
    sudo mv frps.ini /etc/frp/frps.toml
  • 这样就安装好了,可以采用验证是否安装完成并可以执行,如果输出版本信息则表示安装完成。

    1
    2
    ls -l /usr/local/bin/frps
    frps -v
  • 安装好后,我们先将frps程序通过systemed工具实现后台运行,采用如下命令在systemed默认服务脚本路径下新建一个frps.service文件,并配置frps服务。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sudo vim /etc/systemd/system/frps.service

    # 文件写入如下内容:

    [Unit]
    # 服务名称,可自定义
    Description = frp server
    After = network.target syslog.target
    Wants = network.target

    [Service]
    Type = simple
    # 启动frps的命令,修改为刚刚frps和frps.toml的安装路径
    ExecStart = /usr/local/bin/frps -c /etc/frp/frps.toml
    [Install]
    WantedBy = multi-user.target
  • 保存退出,使用如下命令启动或者关闭frps服务,并设置开机自启动。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 清除systemctl缓存,重加载systemctl服务
    sudo systemctl daemon-reload
    # 启动frp
    sudo systemctl start frps
    # 停止frp
    sudo systemctl stop frps
    # 重启frp
    sudo systemctl restart frps
    # 查看frp状态
    sudo systemctl status frps
    # 设置 frps 开机自启动
    sudo systemctl enable frps
  • 下面配置frps.toml文件,打开编辑,默认里面内容就已经有

    1
    2
    3
    4
    # 该端口用于接收客户端连接的端口,大白话讲就是与客户端映射的端口,不需要修改。
    bindPort = 7000
    # 如果你要内穿你的博客就加上这个,这是HTTP 请求的监听端口为 8080。
    vhostHTTPPort = 8080
    1
    2
    # 完成frps.toml文件配置后,重启systemed的frps服务
    sudo systemctl restart frps

配置客户端

  • 客户端就是②需要被远程连接的电脑,重复上面服务端的操作,直到配置frpc.toml文件。注意设置systemed时修改为frpc,不是frps。下面配置frps.toml文件,打开编辑,将下面内容复制并按要求对应修改,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    serverAddr = "x.x.x.x"  # 你的服务器公网ip
    serverPort = 7000 # 对应你配置的frps.toml中的bindPort端口

    # 如下是配置ssh远程连接的,都不用修改直接复制粘贴
    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000

    # 如果你要内穿博客,就复制修改下面内容,两个也可以一起配置。
    [[proxies]]
    name = "web" # 这个随便你起
    type = "http" # 与frps.toml中配置的vhostHTTPPort对应
    localPort = 4000 # 你的博客端口,这里我博客用的hexo,默认是4000端口
    customDomains = ["www.yourdomain.com"] # 你的域名地址,注:你域名要在对应服务商进行域名解析。
  • 完成frpc.toml文件配置后,保存退出编辑。重启systemedfrpc服务

    1
    sudo systemctl restart frpc
  • 现在已经完成了ssh和博客的内网穿透,下面进行测试,

  • cmd进行ssh远程连接

    1
    2
    ssh -o Port=6000 test@x.x.x.x  # -o Port=6000 跟你frps.toml中的remotePort = 6000
    对应,test你用户名,@你的服务器公网Ip
  • 浏览器搜索你的博客

    1
    www.yourdomain.com:8080  # 8080端口就是你在配置frps.toml的监听端口

Windows系统

  • 如果你需要被控的电脑是Win系统,则在仓库下载对应的Win软件包,注意查看自己电脑的架构别下载错了。
  • 下载完解压,可以安装在D盘,但不要使用含有中文的路径。还是跟上面一样内容配置frpc.toml,完成后我们采用 .vbs 脚本实现后台运行frpc服务,在frpc同一目录下新建一个frp.vbs文件,编辑如下内容。
    1
    2
    set ws=WScript.CreateObject("WScript.Shell")
    ws.Run "D:\frp\frpc.exe -c D:\frp\frpc.ini",0 # 这里将你的frpc.exe的路径对应修改
  • 完成保存,win+r输入gpedit.msc 打开本地组策略编辑器 => 计算机配置 => Windows设置 => 脚本 (启动/关机),双击右边的启动,点击添加,脚本名浏览将刚刚的frp.vbs文件导入,脚本参数不用设置,确定、确定、关闭。这样开机就可以自动后台运行 frpc 服务,可以通过任务管理器的进程查看frpc.exe是否在后台运行。