
把笔记本电脑留着未锁并担心有人可能远程登录?正是这种恐惧促使大多数 IT 团队在其远程访问堆栈中添加多因素身份验证。
把笔记本留在未锁定状态并担心有人能远程登录?这种担忧促使大多数 IT 团队在远程访问堆栈中加入多因素认证。仅靠密码是单点失效——而远程桌面端点是高价值目标。本文将带你逐步完成在主流远程访问工具上设置基于时间的一次性密码(TOTP)的实操流程,同时提供现实的恢复与部署建议,避免把用户锁在外面。
为什么 2FA(尤其是 TOTP)对远程桌面很重要
远程访问会绕过物理接近限制,并且常以提升权限运行。被盗用的密码可能让攻击者横向移动进入敏感系统。双因素认证(2FA)加入第二重身份证明——通常是你拥有的东西(TOTP 应用或硬件令牌),作为对你知道的东西(密码)的补充。
TOTP(RFC 6238)是最常见且摩擦较低的第二重因素:一个小型应用(Google Authenticator、Authy、Microsoft Authenticator)会生成每 30 秒失效的 6 位数代码。与 SMS 相比,TOTP 避免了运营商截取;与基于推送的系统比,TOTP 更容易审计并集成到遗留系统中。
重要警告:并非所有远程协议/应用都原生支持 TOTP。像 TeamViewer 和 AnyDesk 这样的原生客户端对其云账号有内建 2FA;Chrome Remote Desktop 和 Google 托管的服务继承你 Google 帐号的两步验证。经典的 RDP(Microsoft)并不会在 Windows 登录界面原生展示 TOTP——你要么在前端放置支持 MFA 的网关(RD Gateway、RD Web + Azure AD),要么使用第三方 MFA 产品(Duo、Okta 等)。
在开始之前的 TOTP 基础与最佳实践
在配置任何东西之前,先了解这些实用默认值和硬规则,这样当有人丢失手机时你的部署不会崩溃。
- 令牌长度和周期:大多数 TOTP 实现使用 6 位数、30 秒窗口。允许的时间容差较窄;设备时钟必须同步。
- 验证器应用:Google Authenticator、Authy、Microsoft Authenticator,以及开源替代品(Aegis、andoird-apps)都可用。Authy 支持多设备同步与备份;Google Authenticator 不支持。
- 备份代码:启用 2FA 时务必生成并安全保存一次性恢复代码。把它们当作 root 密码对待。
- 硬件密钥:对管理员优先使用 FIDO2/U2F 密钥(YubiKey、SoloKey)——比 TOTP 更强并且抗钓鱼。
- 强制执行:先对所有管理员账户启用 2FA,然后再逐步推及到关键用户。不要让例外规则积累。
- 监控:记录 2FA 失败和账户锁定事件。大量失败的 TOTP 尝试是凭证填充或定向攻击的早期信号。
TeamViewer — 在 TeamViewer 帐号上启用 TOTP 的方法
TeamViewer 支持对用于登录管理控制台和客户端的 TeamViewer 帐号启用双因素认证(TOTP)。如果你使用云托管的 TeamViewer 帐号,请对该帐号启用 TOTP;注意即席支持会话仍可能依赖会话码或无人值守访问密码。
- 更新到当前的 TeamViewer 版本(大多数用户请使用 TeamViewer 15.x 或更高版本)。不同客户端与操作系统上的 UI 与菜单标签可能略有差异。
- 在 https://login.teamviewer.com 打开 Management Console 并以帐号所有者身份登录。
- 转到 'Profile' → 'Security' → 'Two-factor authentication'(或 'Manage Two-Factor Authentication')。
- 点击 'Enable' 并用 TOTP 应用(例如 Google Authenticator、Authy)扫描显示的二维码,输入 6 位代码以完成验证。
- 下载或复制控制台提供的打印恢复代码。将它们存放在安全金库中(1Password、Bitwarden)或企业密钥管理器中。
- 通过注销并重新登录进行测试。对于受管环境,可从 Company Profile 或 Management Console 设置强制为团队成员启用 2FA。
注意:TeamViewer 的账号级 2FA 保护对 Management Console 的访问以及云账号客户端的登录流程。如果你在端点使用无人值守访问密码,请定期轮换这些密码,并考虑结合 TeamViewer 的策略控制以降低风险。
AnyDesk — 启用双因素认证
AnyDesk 为 AnyDesk 帐号提供两步验证,并且根据版本与部署情况也可以保护无人值守访问。流程与 TeamViewer 类似。
- 确保你运行的是较新的 AnyDesk 版本(AnyDesk 7/8 时代的客户端在 Settings → Security 中会有 2FA 选项)。
- 打开 AnyDesk 客户端,点击个人资料/用户图标(或访问 my.anydesk.com),进入 Security → Two-Factor Authentication。
- 启用 2FA,使用 TOTP 应用扫描二维码,并输入生成的代码以确认注册。
- 保存备份代码,或在允许时注册第二个验证设备(Authy 或支持多设备的选项在这里有帮助)。
- 对于企业部署,AnyDesk 可通过策略进行集中配置;确保策略对具有管理权限的帐号强制要求 2FA。
注意:如果你依赖 AnyDesk 管理无人值守服务器,请将帐号级 2FA 与强无人值守访问密码和 IP 白名单相结合(若可行)。如果团队规模或预算有限,参见我们关于 AnyDesk 定价的深度解析 /anydesk-pricing-explained。
Chrome Remote Desktop 与 Google 帐号的 TOTP
Chrome Remote Desktop 使用你的 Google 帐号进行认证。这意味着 Chrome Remote Desktop 继承你 Google 帐号上的两步验证设置。Google 支持 TOTP 应用和安全密钥;设置在你的 Google Account 的 Security 设置中完成。
- 打开你的 Google Account 安全页面: https://myaccount.google.com/security。
- 在 'Signing in to Google' 下选择 '2-Step Verification' 并按照提示操作。
- 选择 'Authenticator app' 并扫描二维码,或注册一个安全密钥(建议管理员使用)。
- 保存备份代码,并可选地在备用手机或使用 Authy 上设置 Google Authenticator 以便恢复。
- 测试远程登录以确认在从新设备启动 Chrome Remote Desktop 会话时会出现 2FA 提示。
注意:Chrome Remote Desktop 的安全性取决于你的 Google 帐号策略。对于企业 G Suite 帐号,管理员可以通过管理控制台强制启用两步验证并要求使用安全密钥。
Microsoft RDP — 通过 Azure AD 或第三方 MFA 添加 TOTP
传统的 RDP 和 Windows 本地登录界面并不会原生展示 TOTP 字段。要使用 TOTP 保护 RDP 会话,你有两种主流选择:
- Azure AD + Conditional Access:将认证移动到 Azure AD(Azure AD Join 或 Hybrid Join),并要求 Azure Multi-Factor Authentication。Azure MFA 支持 Microsoft Authenticator 应用,能够生成类似 TOTP 的代码并提供推送通知。Conditional Access 策略可以要求通过 RD Web Gateway 的 RDP 或针对特定用户/组强制 MFA。
- 第三方 MFA 设备与服务:像 Duo(Cisco Duo)这样的产品提供 Windows Logon/RDP 集成(Duo Authentication for Windows Logon and RDP)。Duo 插入认证链并可以要求推送、电话或 TOTP。Duo 对小团队有免费层(历史上最多 10 个用户),企业版为付费计划。
Duo + RDP 的高层步骤:
- 注册 Duo 并为管理员帐号入驻。
- 在目标 RDS 主机上安装 Duo Authentication for Windows Logon(或对远程网关使用 Duo 的 RD Gateway 集成)。
- 配置 Duo 策略以在交互式登录或 RDP 连接时要求第二重因素。使用 Duo Mobile 应用为用户入驻(如果配置,Duo Mobile 中也可提供 TOTP 令牌)。
- 彻底测试:验证本地控制台登录和 RDP 会话都需要第二重因素;确保存在紧急的断路账户并对其进行严格控制。
注意:对于大型企业,结合 Conditional Access 的 Azure AD 和 Microsoft Defender for Identity 提供了最为一体化的体验和单一供应商支持。像 Duo 这样的第三方解决方案通常更容易在混合环境中部署,并支持 TOTP 或推送通知。
自托管与开源堆栈(Tenvo 与替代方案)
如果你运行自托管的远程桌面软件(RustDesk、Tenvo、通过 SOCKS 或 SSH 隧道的 VNC),添加 TOTP 通常意味着以下几种做法之一:
- 启用项目自带的帐号级 2FA(如果项目支持的话,有些项目会加入帐号级的 TOTP 支持);或
- 在服务前端放置一个身份提供者(OpenID Connect / SAML),由其执行 MFA,或者集成像 Keycloak、Authelia 这样的认证代理或注重隐私的解决方案来提供 TOTP;或
- 使用 VPN 或要求 MFA 的 SSH 跳板来在授予 RDP/远程桌面访问前进行强制认证。这样可以把 MFA 的责任移到一个更成熟且易于管理的层次。
Tenvo(我们的开源远程桌面项目)在部署上设计得很灵活:自托管的 Tenvo 实例可以与外部身份提供者集成以实现单点登录和 MFA。如果你想在本地试用 Tenvo 或在身份栈后面运行自托管实例,请参见 /download 和自托管指南 /self-hosted-remote-desktop。
使用 Keycloak 的实用自托管流程(示例):
- 部署 Keycloak(或你的 OIDC/SAML IdP)并启用双因素认证:Keycloak 支持通过验证器应用的 OTP 并能颁发备份代码。
- 配置 Tenvo 使用 Keycloak 作为 OIDC 提供者进行认证(Tenvo 的配置接受标准 OIDC 发现端点)。
- 在 Keycloak 中强制策略:要求 Admin 组用户使用 OTP,要求设备注册以获取提升权限,并记录认证事件。
- 测试故障转移:从 Keycloak 删除设备并验证用户能否使用恢复代码继续恢复访问。
注意:使用 IdP 可将 MFA 与远程桌面应用解耦,集中控制用户生命周期、组策略和审计。该模式也便于合规并在以后更换 MFA 技术时简化操作。
注册、恢复与运营建议
在组织内推广 TOTP 会引起摩擦。用周密的计划来缓解这些问题。
- 分阶段部署:先为特权角色启用 2FA(管理员、远程支持人员),然后在 30–90 天窗口内扩展到所有用户。
- 恢复工作流:要求用户注册备份代码并至少准备一个恢复方法(备用手机、企业帮助台流程)。实施帮助台程序以安全地重新配置 2FA——例如,面对面验证、一次性管理员重新发放并强制立即重新注册。
- 多重验证器:在可能的情况下允许用户注册两个设备(主手机 + 平板或 Authy 的多设备功能),以免丢失一个设备就被锁定。
- 审计与轮换:每 90 天审查有绕过或例外权的账户。对高风险的无人值守访问密码按月或在发现泄露时进行轮换。
- 管理员的安全密钥:向管理员发放 FIDO2 密钥(YubiKey、SoloKey);这些对钓鱼有抗性,是高风险账户的优选。
- 记录与告警:监控多次使用无效 TOTP 的认证尝试,并为账户锁定或突然禁用 2FA 的事件设置告警。
当竞争对手在某一方面更优秀时
要诚实评估各自的强项与权衡。以云为先的供应商(TeamViewer、AnyDesk)让基于帐号的 TOTP 简单且对用户友好;对小团队而言部署容易。若你已经在 Google Workspace 和 Chrome Remote Desktop 生态中标准化,Google 的生态会简化管理。需要条件访问、设备态势检查和更深策略控制的企业会发现 Azure AD 与 Microsoft Defender 更有价值——尤其是在集成设备管理和 Conditional Access 是必需的场景中。
像 Duo 这样的第三方 MFA 供应商在异构环境中表现出色,并为在不重构认证架构的情况下保护 RDP 主机提供便捷路径。如果你需要供应商无关且可自托管的控制,请将 Tenvo(或其他自托管远程工具)与 Keycloak 或 Authelia 这样的 IdP 集成。
在切换开关之前的快速检查清单
- 为所有初始管理员账户准备打印或安全存放的恢复代码。
- 在非关键账户上测试 MFA,并确认仍可通过次要恢复方法访问系统。
- 记录帮助台在设备丢失时的处理流程,并为断路账户创建临时紧急旁路。
- 为至少两位管理员注册硬件安全密钥。
- 发布一份简短用户指南,说明支持哪些验证器应用以及如何注册。
进一步阅读与内部资源
如果你想把安全原理与威胁模型集中看一遍,请阅读我们的入门文档 /remote-desktop-security。有关自托管部署的逐步演练与对身份层更细粒度控制的说明,请参见 /self-hosted-remote-desktop。若想要一个轻量、开源的远程桌面替代方案以测试这些 MFA 模式,请查看 Tenvo 并在 /download 下载构建——企业选项与身份集成在 /pricing 中有描述。
为远程桌面账户实施 TOTP 是影响大而摩擦小的安全改进之一。先从管理员开始,记录恢复路径,然后推广到更广泛的用户群。如果你需要在 IdP 下测试 Tenvo 或需要一个简单的自托管概念验证,我们提供可在 /download 下载的测试构建。