适用于 Linux 的设备注册命令工具

Linux 命令行工具,类似于 Windows dsregcmd,用于从 Microsoft Identity Broker 查询设备注册状态、PRT(主刷新令牌)信息和代理配置。

概述

dsreg 向管理员和开发人员提供有关 Linux 系统上设备注册状态的详细信息。 它会查询 Microsoft Identity Broker 以检索:

  • 设备注册状态
  • 设备 ID 和租户信息
  • PRT (主刷新令牌)状态和刷新时间
  • 证书信息
  • 会话密钥详细信息
  • Broker 版本和配置

安装

该工具包含在 Microsoft Identity Broker 包中,并在安装代理程序时安装到 /usr/bin/dsreg

支持的 Linux 分发版

  • Ubuntu/Debian - DEB 包 (microsoft-identity-broker_*.deb
  • RHEL/Rocky Linux/AlmaLinux - RPM 包 (microsoft-identity-broker-*.rpm
# Ubuntu/Debian
sudo apt install microsoft-identity-broker

注释

安装 microsoft-identity-broker后,dsregcmd 工具在系统范围内可用。

dsreg --help

用法

# Display device registration status
dsreg
dsreg --status

# Display help
dsreg --help

# Query specific tenant
dsreg --tenant-id <tenant-guid>

# Get DRS access token
dsreg --getdrstoken

# Unregister device (requires sudo)
sudo dsreg --tenant-id <tenant-guid> --unregister

# Clean broker state (prompts for confirmation)
dsreg --cleanup

# Clean broker state including certificates (requires sudo)
sudo dsreg --cleanup

命令选项

选项 说明
--status 显示全面的设备注册和 PRT 状态(默认)
--help 显示帮助信息
--tenant-id <id> 查询具有特定租户 GUID 的设备注册信息
--getdrstoken 获取 DRS(设备注册服务)访问令牌以执行设备操作
--unregister 从 Entra ID 租户中注销设备(需要 sudo 和 DRS 令牌)
--cleanup 使用确认提示清除所有本地代理状态。

阶段 1(始终):清除用户级缓存(帐户、令牌、凭据)
阶段 2(仅限根):从 /etc/microsoft/identity-broker/private 和 /etc/microsoft/identity-broker/certs 中删除设备私钥和证书(drs_* 和 stk_* 文件)
注意:不会从 Entra ID 注销设备(需要单独使用 --unregister

输出信息

设备状态

领域 说明
设备注册状态 (已注册/未注册)
设备 ID Microsoft Entra 租户中设备的唯一 ID。
租户 ID 将设备加入Microsoft Entra ID时显示的租户详细信息。
租户名称/域 将设备加入Microsoft Entra ID时显示的租户详细信息。
证书指纹 设备证书的指纹。

主刷新令牌(PRT)

领域 说明
PRT 演示 (是|否)如果登录用户设备上存在主刷新令牌(PRT),则为“是”
PRT 缓存时间 上次在设备上缓存 PRT 的时间(UTC)。
PRT 过期时间 如果 PRT 未续订,将在 UTC 时间过期的时间。
上次 PRT 刷新时间 上次更新企业 PRT 的时间(UTC)。
PRT 年龄(小时)
会话密钥协议版本 用于与 PRT 关联的会话密钥的协议版本。

中转站信息

领域 说明
Broker 版本 设备上安装的当前 microsoft-identity-broker 版本。
代理服务名称 中转站的系统服务的名称。
中转站二进制路径和安装时间戳 代理程序二进制文件的文件路径和安装时间戳。
设备模式 (独占/共享)

示例输出

Device State
-----------------------------------------------------------------
Device Registration Status   : Registered
Device ID                    : a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6
Tenant ID                    : 12345678-90ab-cdef-1234-567890abcdef
Tenant Name                  : contoso.com

Primary Refresh Token
-----------------------------------------------------------------
PRT Present                  : YES
PRT Cached At                : 2025-12-11 08:30:15 UTC
PRT Expires On               : 2025-12-25 08:30:15 UTC
PRT Age                      : 4.25 hours
Session Key Protocol         : 3.1

Broker Information
-----------------------------------------------------------------
Broker Version               : 2.0.123.456
Broker Service Name          : microsoft-identity-device-broker.service
Broker Binary Path           : /opt/microsoft/identity-broker/bin/microsoft-identity-broker
Broker Binary Timestamp      : 2025-12-19 14:30:22 UTC

清理操作

--cleanup 命令进行安全操作。 使用用户确认进行双重清理:

确认提示

在继续之前,dsreg 会显示:

WARNING: This operation will permanently remove all local accounts, credentials, and cached tokens.
         Running as root will also remove device certificates and private keys from:
           - /etc/microsoft/identity-broker/certs (certificates)
           - /etc/microsoft/identity-broker/private (private keys)

This is an irreversible operation.
Do you want to continue? (Y/N):

必须输入 Yy 才能继续。 任何其他输入将取消该操作。

阶段 1:用户级清理(始终运行)

  • 清除所有缓存的帐户
  • 删除所有身份验证令牌
  • 删除存储的凭据
  • 清除 PRT 缓存
  • 删除用户缓存目录:
    • ~/.cache/intune-portal
    • ~/.cache/Microsoft
    • ~/.cache/microsoft-edge
    • ~/.config/intune
    • ~/.config/microsoft-identity-broker
    • ~/.local/share/intune-portal

阶段 2:设备密钥和证书清理(仅限根)

如果以根身份运行,sudo dsreg --cleanup则还会删除:

  • 停止 microsoft-identity-device-broker 服务
  • 设备私钥来自 /etc/microsoft/identity-broker/private/
  • 来自/etc/microsoft/identity-broker/certs/的设备证书
  • 系统级中转站数据 /var/lib/microsoft-identity-device-broker
  • 仅接触在证书目录中以 drs_*stk_* 为前缀的文件
  • 安全:不修改其他密钥或证书

重要说明

  • 清理不会从 Entra ID 中注销设备
  • 若要完全删除设备,请单独运行sudo dsreg --tenant-id <id> --unregister
  • 清理后,用户必须再次登录才能还原 PRT
  • 在没有 sudo 的情况下运行只会清除用户缓存,而不是证书

故障排除

“未能获取代理实例”

原因: 代理未运行或未安装 解决方案:

# Check if broker is running
systemctl status microsoft-identity-device-broker

# Start broker if needed
systemctl start microsoft-identity-device-broker

“设备注册状态:未注册”

原因: 设备尚未向 Entra ID 解决方案注册:

  1. 检查与 Entra ID 的网络连接
  2. 确保设备满足注册要求
  3. 为您的组织启动注册流程

“PRT 存在:否”

原因: 未登录用户或 PRT 已过期 解决方案:

  1. 使用 Entra ID 帐户登录
  2. 验证 PRT 刷新所需的网络连接
  3. 检查时间的同步(PRT 需要准确的时间)

退出代码

Code 含义
0 成功(即使未注册或没有 PRT)
1 命令行参数无效
2 无法初始化(代理服务器不可用)
3 查询失败并出现错误
4 权限不足(需要 sudo)
5 操作所需的 DRS 令牌
6 设备注销失败
7 清理操作失败
8 用户取消了清理操作

安全体系结构

特权分离

该工具通过适当分离关注点来实现安全性:

  • 业务逻辑层DeviceBrokerImpl): 无特权检查,仅可测试逻辑
  • IPC 边界DBusDispatcher):通过 callerUid 验证实施安全
  • 需要 root 权限的操作:在 D-Bus 边界而不是在业务逻辑中实现。

清理过程安全

证书清理经过安全设计:

  • 仅删除在 drs_* 中包含 stk_*/etc/microsoft/identity-broker/private 前缀的文件
  • 从不接触系统或用户证书
  • 在任何破坏性操作之前提供确认提示

Architecture

该工具使用现有的中转站组件:

  • DeviceBroker - 用于设备注册查询和特权操作
  • BrokerCore - 用于 PRT 和身份验证状态
  • DeviceInfoAccessor - 用于设备信息检索
  • CacheManager - 用于读取缓存凭据
  • D-Bus IPC - 用于与代理服务的安全通信

它与中转站共享相同的组件,确保结果一致。

与 Windows dsregcmd 的比较

功能 / 特点 Windows dsregcmd Linux dsreg
设备加入状态
设备 ID
租户 ID
PRT 状态
PRT 时间戳
证书指纹
彩色编码输出

有关详细信息,请参阅以下 Intune 文档: