安全地暴露内网服务

通过创建一个只有授权用户能够访问的 SSH 服务代理,实现内网服务的安全暴露。

某些内网服务,如果直接暴露在公网上,可能存在安全风险。使用 stcp(secret tcp) 类型的代理可以让您安全地将内网服务暴露给经过授权的用户,这需要访问者也部署 frpc 客户端。

步骤

  1. 配置 frps.toml

    在 frps.toml 文件中添加以下内容:

    bindPort = 7000
    
  2. 部署 frpc 客户端并配置

    在需要将内网服务暴露到公网的机器上部署 frpc,并创建如下配置:

    serverAddr = "x.x.x.x"
    serverPort = 7000
    
    [[proxies]]
    name = "secret_ssh"
    type = "stcp"
    # 只有与此处设置的 secretKey 一致的用户才能访问此服务
    secretKey = "abcdefg"
    localIP = "127.0.0.1"
    localPort = 22
    
  3. 在访问者机器上部署并配置 frpc

    在想要访问内网服务的机器上也部署 frpc,并创建如下配置:

    serverAddr = "x.x.x.x"
    serverPort = 7000
    
    [[visitors]]
    name = "secret_ssh_visitor"
    type = "stcp"
    # 要访问的 stcp 代理的名字
    serverName = "secret_ssh"
    secretKey = "abcdefg"
    # 绑定本地端口以访问 SSH 服务
    bindAddr = "127.0.0.1"
    bindPort = 6000
    
  4. 通过 SSH 访问内网机器

    使用以下命令通过 SSH 访问内网机器,假设用户名为 test:

    ssh -o Port=6000 test@127.0.0.1
    
最后修改 May 21, 2024: fix doc (#81) (a85ff88)