安全地暴露内网服务

这个示例将会创建一个只有自己能访问到的 SSH 服务代理。

对于某些服务来说如果直接暴露于公网上将会存在安全隐患。

使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc 客户端。

  1. frps.ini 内容如下:

    1. [common]
    2. bind_port = 7000
  2. 在需要暴露到内网的机器上部署 frpc,且配置如下:

    1. [common]
    2. server_addr = x.x.x.x
    3. server_port = 7000
    4. [secret_ssh]
    5. type = stcp
    6. # 只有 sk 一致的用户才能访问到此服务
    7. sk = abcdefg
    8. local_ip = 127.0.0.1
    9. local_port = 22
  3. 在想要访问内网服务的机器上也部署 frpc,且配置如下:

    1. [common]
    2. server_addr = x.x.x.x
    3. server_port = 7000
    4. [secret_ssh_visitor]
    5. type = stcp
    6. # stcp 的访问者
    7. role = visitor
    8. # 要访问的 stcp 代理的名字
    9. server_name = secret_ssh
    10. sk = abcdefg
    11. # 绑定本地端口用于访问 SSH 服务
    12. bind_addr = 127.0.0.1
    13. bind_port = 6000
  4. 通过 SSH 访问内网机器,假设用户名为 test:

    ssh -oPort=6000 test@127.0.0.1

最后修改 March 19, 2021: update docs (f1b297a)