AnywhereFrp

更新于 2024-02-28

0、通用命令

./Anywhere.FrpV2 newkey key-name

创建新的密钥对,用于登录服务器,必须指定名称key-name,命令将输出公钥。
通常在客户端(被穿透机|通道服务)执行本命令,然后在服务器运行addkey命令,将公钥添加到服务器。

例如:

./Anywhere.FrpV2 newkey ecdsa

./Anywhere.FrpV2 addkey "public-key"

添加公钥到服务器,由于public-key带有空格,务必使用"包括public-key
通常在服务器运行本命令。
例如:

./Anywhere.FrpV2 addkey "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHtbpKO2wnoop6Ao8bYuSWVUXnPM2neI+J0HnZvJsYqSL82FB+CKP+XAECNKg5LWFLb07U2z2lXc69yL2u8dkpA="

./Anywhere.FrpV2 register server [--authenticate-as key-name]

server指定的服务器注册为发布者,输出发布者唯一ID
如果服务器需要鉴权,需要提供--authenticate-as参数
例如:

./Anywhere.FrpV2 register 127.0.0.1:4578

./Anywhere.FrpV2 server-check server [--authenticate-as key-name]

校验server指定的服务器
如果服务器需要鉴权,需要提供--authenticate-as参数
例如:

./Anywhere.FrpV2 server-check 127.0.0.1:4578

1、配置文件

配置文件保存在程序目录下的app.conf
包含三种类型的配置:server/publish/tunnel,每种配置均可出现多次。
例如,配置多个publish连接不同的服务器,配置多个tunnel提供不同的端口转发服务。
不同服务没有特别的界限,在同一台服务器同时提供server/publish/tunnel三种服务也没问题。

server {
    listen 0.0.0.0:4578;
    authentication_required on;
    public_key_auto_login off;
}

publish {
    server 127.0.0.1:4578;
    authenticate_as ecdsa;
    host_key_auto_accept off;
    botnet 'tDICc3JLvU6rENR5s9PRlA==';

    binding {
        host local.baidu.com;
        target www.baidu.com:80;
    }
    binding {
        https;
        host local.baidu.com;
        target www.baidu.com:443;
    }

    binding {
        ssh;
        host local.baidu.com;
        target 127.0.0.1:43388;
    }
}

ssh {
    listen 127.0.0.1:43399;
    server 127.0.0.1:4578;
    host local.baidu.com;
}

tunnel {
    listen 0.0.0.0:4588;
    target www.baidu.com:443;
    server 127.0.0.1:4578;
    host_key_auto_accept off;
    botnet 'tDICc3JLvU6rENR5s9PRlA==';
    authenticate_as ecdsa;
    ssl_off_loading on;
    keep_http_host on;
}

server配置

配置为服务器,作为穿透服务的中转站。

publish配置

配置为服务提供者,其他机器可通过穿透服务器利用本机提供服务。

ssh配置

将本地listen的端口通过server指定的穿透服务器映射到host绑定的目标主机的ssh服务端口。
要求发布者使用binding配置绑定过ssh服务。

注意:通常跟publish机器分开部署。
注意:使用tunnel可实现相同的功能,不过使用tunnel有两层加密,而使用ssh配置则只有一层ssh协议本身的加密。通常,ssh协议本身的安全加密强度已足够高。

tunnel配置

配置为通道服务,提供端口转发服务,可不依赖穿透服务器,仅仅在本地提供端口转发服务。

注意:通常跟publish机器分开部署。

2、安装为服务

使用--install-as service-name安装为名称为service-name的服务。
例如:./Anywhere.FrpV2 --install-as anywhere-frp