跳转到内容
搜索文档

在无头 Linux 计算机上部署 Cloudflare One 客户端

最后更新 查看 MarkdownAgent 设置

本教程介绍如何使用服务令牌和安装脚本在 Linux 设备上部署 Cloudflare One 客户端。此部署工作流专为无头(headless)服务器(即无法访问浏览器以进行身份提供商登录的服务器)以及您希望完全自动化加入流程的情况而设计。由于设备不会通过身份提供商进行注册,因此基于身份的策略和日志记录将不可用。

前提条件

1. 创建服务令牌

完全自动化的部署依赖服务令牌来将 Cloudflare One 客户端注册到您的 Zero Trust 组织中。您可以使用相同的令牌注册多个设备,如果设备需要不同的设备配置文件设置,则可以为每个设备生成唯一的令牌。

要创建服务令牌:

  1. Cloudflare 仪表板中,前往 Zero Trust > Access controls(访问控制) > Service credentials(服务凭据) > Service Tokens(服务令牌)

  2. 选择 Create Service Token(创建服务令牌)

  3. 为服务令牌命名。该名称便于您在日志中识别与令牌相关的事件,并可单独撤销令牌。

  4. 选择 Service Token Duration(服务令牌有效期)。这将设置令牌的到期日期。

  5. 选择 Generate token(生成令牌)。您将看到为服务令牌生成的 Client ID 和 Client Secret,以及各自的请求头。

  6. 复制 Client Secret。

  1. Access Service Tokens 端点发出 POST 请求:

    Required API token permissions

    At least one of the following token permissions is required:
    • Access: Service Tokens Write
    Create a service tokenbash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "CI/CD token",
    		"duration": "8760h"
    	}'
  2. 复制响应中返回的 client_idclient_secret 值。

    Responsejson
    "result": {
    	"client_id": "88bf3b6d86161464f6509f7219099e57.access",
    	"client_secret": "bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5",
    	"created_at": "2025-09-25T22:26:26Z",
    	"expires_at": "2026-09-25T22:26:26Z",
    	"id": "3537a672-e4d8-4d89-aab9-26cb622918a1",
    	"name": "CI/CD token",
    	"updated_at": "2025-09-25T22:26:26Z",
    	"duration": "8760h",
    	"client_secret_version": 1
    }
  1. 向您的 cloudflare_api_token 添加以下权限:

    • Access: Service Tokens Write
  2. 配置 cloudflare_zero_trust_access_service_token 资源:

    resource "cloudflare_zero_trust_access_service_token" "example_service_token" {
    	account_id = var.cloudflare_account_id
    	name       = "Example service token"
    	duration  = "8760h"
    
    	lifecycle {
    		create_before_destroy = true
    	}
    }
  3. 获取服务令牌的 Client ID 和 Client Secret:

    示例:输出到 CLI

    1. 将 Client ID 和 Client Secret 输出到 Terraform 状态文件:
      output "example_service_token_client_id" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_id
      }
      
      output "example_service_token_client_secret" {
      	value     = cloudflare_zero_trust_access_service_token.example_service_token.client_secret
      	sensitive = true
      }
    2. 应用配置:
      terraform apply
    3. 读取 Client ID 和 Client Secret:
      terraform output -raw example_service_token_client_id
      terraform output -raw example_service_token_client_secret

    示例:存储在 HashiCorp Vault 中

    	resource "vault_generic_secret" "example_service_token" {
    		path         = "kv/cloudflare/example_service_token"
    
    		data_json = jsonencode({
    			"CLIENT_ID"     = cloudflare_access_service_token.example_service_token.client_id
    			"CLIENT_SECRET" = cloudflare_access_service_token.example_service_token.client_secret
    		})
    	}

2. 配置设备注册权限

设备注册权限决定了哪些用户和设备可以向您的 Zero Trust 组织注册 WARP。

要允许设备使用服务令牌进行注册:

  1. Cloudflare 仪表板中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备)。选择 Management(管理) 选项卡。

  2. Device enrollment permissions(设备注册权限) 中,选择 Manage(管理)

  3. Policies(策略) 选项卡中,选择 Create new policy(创建新策略)。系统将打开一个新选项卡,其中显示策略创建页面。

  4. 对于 Action(操作),选择 Service Auth

  5. 对于 Selector(选择器) 字段,您有两个选择:您可以允许所有服务令牌 (Any Access Service Token),也可以允许特定的服务令牌 (Service Token)。例如:

    规则操作 规则类型 选择器
    Service Auth(服务身份验证) Include(包含) Service Token(服务令牌) <TOKEN-NAME>
  6. 保存策略。

  7. 返回 Device enrollment permissions(设备注册权限) 并将新创建的策略添加到您的权限中。

  8. 选择 Save(保存)

3. 创建安装脚本

您可以使用 shell 脚本来自动执行 WARP 的安装和注册。以下示例展示了如何在 Ubuntu 24.04 上部署 Cloudflare One 客户端。

  1. 在终端中,使用文本编辑器创建一个新的 .sh 文件。例如:

    vim install_warp.sh
  2. i 进入插入模式并添加以下行:

    #!/bin/bash
    set -e
    
    # Download and install the Cloudflare One Client
    function warp() {
    		curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg
    		echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list
    		sudo apt-get update --assume-yes
    		sudo apt-get install --assume-yes cloudflare-warp
    }
    
    # Create an MDM file with your Cloudflare One Client deployment parameters
    function mdm() {
    	sudo touch /var/lib/cloudflare-warp/mdm.xml
    	cat > /var/lib/cloudflare-warp/mdm.xml << "EOF"
    <dict>
    		<key>auth_client_id</key>
    		<string>88bf3b6d86161464f6509f7219099e57.access</string>
    		<key>auth_client_secret</key>
    		<string>bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5</string>
    		<key>auto_connect</key>
    		<integer>1</integer>
    		<key>onboarding</key>
    		<false/>
    		<key>organization</key>
    		<string>your-team-name</string>
    		<key>service_mode</key>
    		<string>warp</string>
    </dict>
    EOF
    }
    
    #main program
    warp
    mdm
  3. 如果您使用的是 Debian 或 RHEL / CentOS,请修改 warp() 函数,以便它为您的操作系统安装正确的 WARP 软件包

  4. 修改 mdm() 函数中的值:

    1. 对于 auth_client_idauth_client_secret,将字符串值替换为您的服务令牌的 Client ID 和 Client Secret。
    2. 对于 organization,将 your-team-name 替换为您的 Zero Trust 团队名称。 3.(可选)根据您的偏好添加或修改其他 Cloudflare One 客户端部署参数
  5. esc,然后输入 :x 并按 Enter 保存并退出。

4. 安装 WARP

要使用示例脚本安装 Cloudflare One 客户端:

  1. 使脚本可执行:

    chmod +x install_warp.sh
  2. 运行脚本:

    sudo ./install_warp.sh

Cloudflare One 客户端现在已部署,其配置参数存储在 /var/lib/cloudflare-warp/mdm.xml 中。假设已配置 auto_connect,Cloudflare One 客户端将自动连接到您的 Zero Trust 组织。连接后,该设备将显示在 Cloudflare 仪表板Zero Trust > Team & Resources(团队和资源) > Devices(设备) 下,其电子邮件为 non_identity@<team-name>.cloudflareaccess.com

这篇文档对您有帮助吗?