我将以您的服务器 dev.hostcache.com 作为frp的服务端(frps),为您提供一个详细的、分步式的配置指南。

核心概念

  1. frps (FRP Server): 运行在您有公网IP的服务器上(例如 dev.hostcache.com)。它像一个“总机”,负责接收来自外网的请求和来自内网客户端的连接。
  2. frpc (FRP Client): 运行在您家中的内网Linux服务器上。它会主动连接到您的frps服务器,并告诉它:“你好,我在这里,请把发往某个特定端口的请求转给我。”

数据流图

整个连接过程是这样的:

[您在外部的电脑] ---SSH连接---> [dev.hostcache.com:6000] ===(frp隧道)===> [您家中的Linux服务器:22]
     (第3步)                      (第1步: frps 服务端)                 (第2步: frpc 客户端)

您最终SSH连接的目标地址是您的公网服务器 dev.hostcache.com,但端口是一个您自定义的特殊端口(例如 6000)。frps 会将这个端口的流量通过frp建立的安全隧道,转发给您家里的Linux服务器的22号SSH端口。


第一步:在公网服务器上配置 frps (服务端)

我们选择 dev.hostcache.com 作为服务端。

  1. 登录您的公网服务器

    ssh [email protected]
    
    
  2. 下载并解压 frp

    • 访问 frp 的 GitHub Releases 页面 查找最新版本。
    • 根据您服务器的CPU架构选择合适的版本。绝大多数云服务器都是 amd64
    • 以下命令以下载 0.59.0 版本为例,您可以替换为最新版链接。
    # 下载
    wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz
    
    # 解压
    tar -zxvf frp_0.59.0_linux_amd64.tar.gz
    
    # 进入解压后的目录,目录名可能包含版本号
    cd frp_0.59.0_linux_amd64
    
    

    解压后,您会看到 frpsfrpc 以及它们的配置文件 frps.tomlfrpc.toml。在服务端,我们只关心 frpsfrps.toml

  3. 配置 frps.toml 文件
    使用 vimnano 编辑 frps.toml 文件:

    nano frps.toml
    
    

    将其内容修改为如下(这是一个精简且安全的配置):

    # frps.toml
    
    # frp服务端的监听端口,frpc客户端将通过此端口连接到frps
    bindPort = 7000
    
    # 认证令牌(Token),frpc客户端需要使用相同的令牌才能连接成功
    # 请务必修改为一个复杂的、随机的字符串,这是安全的关键!
    auth.token = "YourSecretToken_ChangeThis"
    
    
    • bindPort = 7000: 这是frp服务端和客户端之间通信的端口。
    • auth.token: 这是一个密码,确保只有您自己的客户端才能连上。请务必替换成一个您自己的复杂密码。
  4. 配置服务器防火墙
    您的公网服务器必须放行两个端口:

    • 7000 (TCP): 用于frp客户端连接(即 bindPort)。
    • 6000 (TCP): 这是我们计划用于从外网SSH访问的端口(即 remote_port,下一步客户端会配置)。

    如果您的服务器使用 ufw 防火墙 (常见于Ubuntu/Debian):

    sudo ufw allow 7000/tcp
    sudo ufw allow 6000/tcp
    sudo ufw reload
    
    

    如果使用 firewalld (常见于CentOS/RHEL):

    sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=6000/tcp --permanent
    sudo firewall-cmd --reload
    
    

    注意:如果您的云服务商(如阿里云、腾讯云、AWS)有安全组策略,您还需要在网页控制台中放行这两个端口。

  5. 启动 frps 服务
    先在前台运行测试一下,确保没有报错:

    ./frps -c ./frps.toml
    
    

    如果看到类似 frps started successfully 的日志,说明服务端配置成功。按 Ctrl+C 停止它,我们稍后会配置成系统服务。


第二步:在内网Linux服务器上配置 frpc (客户端)

现在回到您家里的、处于大内网的Linux服务器上。

  1. 下载并解压 frp
    执行和第一步中相同的下载和解压操作。

    wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz
    tar -zxvf frp_0.59.0_linux_amd64.tar.gz
    cd frp_0.59.0_linux_amd64
    
    

    在客户端,我们只关心 frpcfrpc.toml

  2. 配置 frpc.toml 文件
    编辑 frpc.toml 文件:

    nano frpc.toml
    
    

    将其内容修改为如下:

    # frpc.toml
    
    # frps服务端的地址,也就是您公网服务器的域名或IP
    serverAddr = "dev.hostcache.com"
    
    # frps服务端的端口,必须与frps.toml中的 bindPort 一致
    serverPort = 7000
    
    # 认证令牌,必须与frps.toml中的 auth.token 完全一致
    auth.token = "YourSecretToken_ChangeThis"
    
    # 定义一个名为 "ssh" 的穿透规则
    [[proxies]]
    name = "ssh"
    type = "tcp"
    localIP = "127.0.0.1"
    localPort = 22
    remotePort = 6000
    
    
    • serverAddr: 填写您公网服务器的域名。
    • auth.token: 必须和服务器上设置的完全一样。
    • [[proxies]]: 这里定义了一个具体的转发规则。
      • name: 规则名,自定义。
      • type = "tcp": SSH 使用 TCP 协议。
      • localIP = "127.0.0.1": SSH服务就在本机上。
      • localPort = 22: 本机SSH服务的端口号。
      • remotePort = 6000: 这是关键!它告诉frps在 dev.hostcache.com 上监听 6000 端口,并将流量转发到本机的22端口。
  3. 启动 frpc 服务
    同样,先在前台运行测试:

    ./frpc -c ./frpc.toml
    
    

    如果您的配置都正确,您应该会看到类似 login to server success 的日志,表示客户端已经成功连接到服务端。


第三步:从外网连接

现在,一切准备就绪。您可以在任何地方(比如您的笔记本电脑,用手机开热点模拟外网)打开终端,使用以下命令连接您家里的服务器:

ssh [email protected] -p 6000

请注意命令的每一部分:

如果一切顺利,系统会提示您输入密码(或使用密钥),然后您就成功登录到家里的Linux服务器了!


第四步:将 frp 设置为系统服务 (实现开机自启)

为了让frp在服务器重启后能自动运行,我们需要将它配置为 systemd 服务。

在公网服务器 dev.hostcache.com 上操作:

  1. frpsfrps.toml 移动到合适的目录:

    sudo mkdir -p /etc/frp
    sudo cp frps /usr/bin
    sudo cp frps.toml /etc/frp/
    
    
  2. 创建 systemd 服务文件:

    sudo nano /etc/systemd/system/frps.service
    
    
  3. 粘贴以下内容:

    [Unit]
    Description=FRP Server
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/bin/frps -c /etc/frp/frps.toml
    
    [Install]
    WantedBy=multi-user.target
    
    
  4. 启动并设置开机自启:

    sudo systemctl daemon-reload
    sudo systemctl enable frps
    sudo systemctl start frps
    sudo systemctl status frps  # 检查服务状态
    
    

在内网Linux服务器上操作:

  1. 同样,移动文件:

    sudo mkdir -p /etc/frp
    sudo cp frpc /usr/bin
    sudo cp frpc.toml /etc/frp/
    
    
  2. 创建 systemd 服务文件:

    sudo nano /etc/systemd/system/frpc.service
    
    
  3. 粘贴以下内容(注意 ExecStart 的路径和程序名):

    [Unit]
    Description=FRP Client
    After=network.target
    
    [Service]
    Type=simple
    User=nobody
    Restart=on-failure
    RestartSec=5s
    ExecStart=/usr/bin/frpc -c /etc/frp/frpc.toml
    
    [Install]
    WantedBy=multi-user.target
    
    
  4. 启动并设置开机自启:

    sudo systemctl daemon-reload
    sudo systemctl enable frpc
    sudo systemctl start frpc
    sudo systemctl status frpc  # 检查服务状态
    
    

现在您已经拥有了一个稳定、可靠且开机自启的内网穿透方案,可以随时随地访问您家中的Linux服务器了。