周一早上一到公司运维群里就有人艾特我“服务器远程桌面连不上了提示‘远程桌面授权模式尚未配置远程桌面服务将在11天后停止工作’。”这种报错凡是用过Windows Server 2008 R2的人应该都不陌生。网上关于“120天过期”的解法一搜一大把但大多数帖子只说了一个点要么让你去改注册表重新计时要么让你装个授权角色。真正把“为什么限连接数”“120天从哪算起”“授权模式和CAL数量到底是什么关系”讲清楚的没几篇。这篇文章把我这几年处理这类工单的完整思路整理出来从授权原理到操作步骤从事件日志排查到日常预防一次性聊透。1. 先理解这120天从哪来授权服务器的“发牌机制”1.1 远程桌面授权是什么停车场里的发牌逻辑Windows Server 2008 R2的远程桌面服务在功能上拆成两个角色远程桌面会话主机Remote Desktop Session Host和远程桌面授权Remote Desktop Licensing。会话主机是真正承载用户会话、提供桌面环境的那一方授权服务器则是负责发许可证的。我平时跟人解释这个关系喜欢拿停车场打比方会话主机就是停车场里的车位授权服务器是大门口的自动收费杆CAL客户端访问许可证相当于月卡。没有月卡闸杆不抬车就进不去。月卡数量决定了能同时停多少辆车收费系统故障会导致整个停车场瘫痪而120天宽限期相当于停车场在试运营阶段允许你先不装收费杆免费停一阵子。这样讲之后再去看微软文档里那些“许可模式”“CAL”“TS客户端访问许可证”之类的名词就没那么抽象了。在Windows Server 2008 R2里远程桌面CAL也分两种每设备和每用户。每设备CAL针对的是“客户端设备”每用户CAL针对的是“域用户账号”。无论哪种流量控制的核心都是通过授权服务器完成的。用户发起远程桌面连接会话主机先去找授权服务器查询这个用户/设备有没有可用的CAL有放行没有或服务器不可达连接请求就被卡住。从历史上看这个机制在Windows Server 2003的“终端服务”时代就已经存在很多人习惯叫“终端服务授权”。到了2008 R2命名换成了“远程桌面服务”但底层的授权逻辑并没有本质改变。所以如果你之前配过2003或2008的终端服务授权处理2008 R2的问题思路完全可以复用。1.2 120天宽限期是从哪个动作开始算的什么时候会触发120天宽限期呢不是安装系统后就开始算而是从你添加“远程桌面会话主机”角色开始算。默认状态下2008 R2只提供两个并发管理会话这个是“管理性远程桌面”自带的权限不需要授权服务器也能用。但只要你通过服务器管理器添加了会话主机角色等于告诉系统“我要把这台服务器当应用服务器给多人远程使用”系统就会进入评估模式给你120天时间做准备。这120天是拿来干嘛的按微软的设计意图是让你在这段时间内完成三件事采购合法的RDS CAL、激活授权服务器、把CAL安装进去。很多运维同事栽就栽在这儿一开始不着急总想等到快到期再处理结果第120天一过远程桌面服务直接罢工。我亲眼见过一家公司整个运维部都在外地办公靠一台2008 R2的远程桌面连业务系统宽限期悄悄过了结果第二天全员被拒之门外最后是远程协助把授权服务器激活才在当天下午把服务恢复。这种事本可以在半个月前用一个简单的计划任务避免。关于倒计时的表现常见的是在远程桌面连接时弹窗提示“远程桌面授权模式尚未配置远程桌面服务将在X天后停止工作”X随着时间递减。到了最后几天有些服务器是直接拒绝非管理员连接有些是登录进去之后打开桌面再弹一个会话中断的框表现不一定完全一样。所以不要等弹窗出来再处理应该提前把授权相关的事件日志纳入监控。1.3 连接数和授权之间隔了几层“连接数”这个词在很多运维脑子里是模糊的。我把它拆成三层理解第一层系统底层的“管理会话”限制默认2个不依赖授权给管理员修修补补用第二层会话主机角色下的并发会话数由授权服务器可分配的CAL数量决定第三层RDP-Tcp属性里手动设置的“最大连接数”这是一个额外的人为上限。如果遇到“连接数不够”的工单先把这三层都看一遍而不是只盯着其中一层。很多时候问题出在第三层比如有人把最大连接数改成了2导致有再多授权也连不上。这个检查逻辑在后面第3节里还会细讲。2. 看懂报错再动手从“授权模式尚未配置”到授权服务器激活2.1 同样一句报错背后原因可能完全不同实际工作中“远程桌面授权模式尚未配置”这句话背后至少有三类原因安装了会话主机角色但完全没装授权角色服务器压根没有授权服务器可查装好了授权服务器但会话主机配置里没指定授权模式和服务器地址指定了服务器但被组策略覆盖或者授权服务器本身没激活、没有可用的CAL。所以我接到工单后的第一件事不是急着操作而是先按顺序收集信息当前装了哪几个远程桌面服务角色授权管理器里授权服务器状态是未激活还是已激活CAL数量是0还是够数远程桌面会话主机配置里授权模式是不是空着的把这几个问题答完基本就知道该修哪一块了。直接上手乱点一气容易把原本正常的授权服务器配置搞坏反而更难查。2.2 标准修复路径五步走到恢复正面解决的流程其实不复杂我整理成一份可以直接照着做的清单。第一步安装远程桌面授权角色登录服务器打开服务器管理器右键“角色”选择“添加角色”勾选“远程桌面服务”在角色服务里勾选“远程桌面授权”。比较建议勾选“远程桌面会话主机”一起装这样同一台服务器既能承载会话又能发许可证。如果不想用向导也可以在命令行里执行ServerManagerCmd -i RDS-Licensing执行完同样可以完成授权角色的安装装完后需要重启。第二步激活授权服务器打开“管理工具”→“远程桌面服务”→“远程桌面授权管理器”找到本机服务器节点。右键选择“激活服务器”会弹出激活向导。激活方式有三种Internet自动激活需要服务器能访问微软激活服务一般网络正常情况下几分钟内完成Web浏览器激活在有网络的其他电脑上打开微软激活页面输入产品ID获得确认ID后回来填电话激活拨打微软电话激活热线按语音提示获取确认ID。办公室里如果服务器在隔离网络Web激活是最常用的方式。第三步安装许可证CAL授权服务器激活后右键授权服务器节点选择“安装许可证”向导会让你选择许可计划。常见的许可计划零售Retail开放式授权Open License企业协议Enterprise Agreement。这里需要输入你购买授权时拿到的授权码/协议号然后输入购买数量。装完之后在授权管理器中能看到许可证数量状态变成“已启用”才算真正可用。第四步指定授权模式和授权服务器这一步非常容易漏。打开“远程桌面会话主机配置”运行tsconfig.msc双击“RDP-Tcp”在“授权”选项卡里选择“每用户”或“每设备”并填写授权服务器的计算机名或IP。如果服务器在域环境还要检查有没有组策略把这里的设置覆盖掉。对应的组策略位置是计算机配置\管理模板\Windows组件\远程桌面服务\远程桌面会话主机\授权里面有“使用指定的远程桌面授权服务器”和“设置远程桌面授权模式”两个策略项。只要配了GPO本地的tsconfig配置就会以灰色显示改不动。第五步验证配置好后重启会话主机服务重启机器最省事再用普通用户账号做一次新的远程桌面连接。连上就是成功如果还是报错继续看第4节的排错思路。2.3 激活授权服务器时的三个常见卡点激活过程中有几个卡点特别常见。第一个是“激活服务器”按钮是灰色点不了这种情况通常是授权管理器的目标服务器选错了或者当前账号在授权服务器本地上权限不足需要用管理员权限运行控制台或者右键的时候选到了“连接到许可证服务器”而不是本机节点。第二个是Web激活时确认ID填进去老提示错误十有八九是复制的时候把空格也带上了或者确认ID没填完整。电话激活也存在类似问题建议把确认ID分段的横杠删掉再试部分英文版系统对格式要求很挑剔。第三个是安装许可证时提示“许可证计划不存在”多数情况是你选了Open License但输入的协议号格式不对。正常应该输入类似“XXXX-XXXX”的8到16位字母数字组合如果是从代理商那边拿到的要确认这是授权号码而不是产品密钥。买过正版授权的朋友应该知道这里一旦输错后面CAL数量就一直显示为0。3. 连接数不够用默认2个会话与授权数量的扩容逻辑3.1 默认2个连接的限制到底是什么“只能连2个”这个限制让很多人头疼但先要搞明白它限制的是什么。默认状态下2008 R2允许管理员建立最多2个并发远程会话专门用于日常管理维护。这个限制是“管理性远程桌面”自带的不需要授权也可以一直用。问题在于很多人觉得“2个不够用”于是自行安装了远程桌面会话主机角色却发现连接数并没有变成几十个反而带来了120天授权倒计时。原因在于会话主机角色定义的是“普通用户通过远程桌面访问Windows桌面”的应用方式一旦开启并发会话数量就不是简单改个配置的事而是由你可以提供多少CAL决定。装好授权服务器、装好许可证并发数由授权数决定不装就只有那2个管理会话可用。所以我经常跟人强调不要把安装会话主机角色当成“解锁连接数上限”的手段。它是一个认真的功能切换配套的授权责任也会跟着一起落到你头上。3.2 扩容连接数的三层配置角色、授权、连接数设置正规路径三步走添加“远程桌面会话主机”角色按第2节方法配置授权服务器和CAL确认授权模式与购买的CAL类型一致。除此之外在“远程桌面会话主机配置”里还有一处“连接数”限制双击“RDP-Tcp”在属性里有“最大连接数”相关设置默认通常是不受限制但有时候会被手贱改成2。如果这里被手动改小了那即使有100个CAL还是只能连指定数量。检查的时候要把这两层都看一遍。还有一个容易被忽视的习惯用完后注销而不是直接关窗口。很多用户喜欢直接点窗口右上角的X以为断开了实际会话还在服务器上挂着。日积月累明明只有20个活跃用户会话列表里可能有40个残留会话一部分显示“已断开”但仍然占用着CAL。经常用qwinsta看一下会话状态把没有业务的断开会话重置掉是扩容最直接的手段。3.3 每用户和每设备怎么选先算账再买授权我见过最可惜的案例公司买的是每设备CAL结果管理员在会话主机上选了每用户模式用户一多许可证很快报不足。两种模式的区别其实很简单每设备CAL以“设备”为单位发许可证。一台电脑不管有多少个用户登录只需要一个设备CAL。适合工位固定、用户轮流使用的场景每用户CAL以“域用户”为单位发许可证。一个用户无论从几台电脑登录都只消耗一个用户CAL。适合员工经常换电脑、移动办公的场景。具体怎么选要看你的业务形态。如果你的用户从来不在公司内外网之间乱跑每个人固定一台办公电脑每设备更划算如果你的运维团队或者业务人员会从家里、现场、客户那边多终端登录每用户更省心。还要注意如果域环境里采用了不匹配的许可模式授权服务器分配CAL的时候会非常双标宁可少买也不能让模式和实际用的不一致。4. 排错实录事件日志、注册表残留、GPO覆盖一个都不放过4.1 事件日志是最诚实的排错入口处理这类问题最好用的不是搜索引擎也不是群聊而是自己服务器上的事件日志。打开事件查看器在“应用程序”日志里筛选来源类似“TerminalServices-Licensing”或“RemoteDesktopServices”的事件。常见的错误事件特征大致是报告授权服务器无法连接或不可用报告没有可用的许可证报告授权模式与服务器配置不匹配。日志里通常带着时间戳和触发事件的计算机名排查起来非常直接。我一般会先按“最近1小时”筛一遍再看第一次出现报错的时间点对照一下那个时间是不是刚好有人改了配置、装了角色或者重启过服务。很多时候事件日志能告诉你报错是从哪个操作开始的这样处理起来就简单了。4.2 授权服务器状态的检查顺序打开“远程桌面授权管理器”看服务器图标和状态。常见状态有未激活图标上有个感叹号说明还没做第2节的激活步骤已激活临时刚激活但还没安装CAL已激活永久正常状态。如果授权服务器已激活但没有安装许可证后面依然无法提供连接。另一种情况是授权服务器装在了另一台机器上但会话主机连不上它。这时候优先检查两件事一是防火墙有没有放行远程桌面授权所需的RPC端口主要是TCP 135以及动态RPC端口二是两台机器的时间同步偏差超过5分钟RPC和Kerberos验证大概率失败授权请求就会被拒绝。还有一点很隐蔽如果会话主机和授权服务器不在同一个域甚至一个在工作组一个在域里别忘了检查双方是否有信任关系。没有信任关系时即使授权服务器可达会话主机发过去的许可证请求也可能被判定为“不受信任的终端服务器”直接不予回应。4.3 注册表残留导致的“改完没用”与GPO的优先级有时明明在tsconfig里改好了模式和服务器地址重新连接还是老报错。这时候要检查注册表残留HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core这个键下面保存着本机配置过的授权相关信息。如果曾经配过已失效的服务器注册表里的旧记录不会自动清掉应用层面可能还在用旧的配置。处理方式先把界面上的配置改成正确的然后重启“Remote Desktop Services”服务再看事件日志。如果还是无效可以用组策略强制下拉指定值再执行gpupdate /force。这里尤其提醒域环境的朋友组策略优先级永远高于本地设置。有时候你手工改了半天刷新策略立刻被打回原形。遇到这种情况就用rsop.msc查看最终生效的策略结果而不是跟本地配置死磕。判断出是哪条GPO在起作用再有针对性地去域控制器上修改或者把该OU的这条策略禁用掉。5. 如何让这类工单不再出现监控、采购与迁移层面的经验5.1 运维台账与月度检查处理过一次这种问题之后最好在运维台账里补上几项固定检查内容授权服务器当前状态未激活/已激活/临时状态已安装CAL数量与实际并发会话数量事件日志里最近有没有TerminalServices-Licensing级别的错误会话列表中有没有被遗忘的“已断开”会话。每季度到“远程桌面授权管理器”里看一眼授权余量把剩余数量记下来低于某个阈值就要提醒采购。我个人的习惯是建一个计划任务每周跑一次脚本把授权管理器中的许可证状态写到日志文件里。这样哪天突然接到晚报翻一下日志就知道是不是授权余量不足导致的。5.2 CAL数量估算与采购建议关于该买多少CAL我给的建议一向是按“峰值并发”而不是“总人数”来买。比如单位有50个研发员工但平时同时远程桌面在线的最多20人那买25个左右每用户CAL留一点余量性价比最高。如果走每设备就要按“所有可能用到远程桌面的设备数”算不能只看活跃设备。这两种算法算出来的数字可能差很多但都有一个共性要结合未来半年有没有扩容计划。如果采购周期很长宁可多买一点也不要卡着峰值买。授权这东西一旦不够用员工干不了活的影响可远比多买几个授权贵得多。5.3 老系统迁移前的最后一步2008 R2早已停止主流支持新硬件驱动、新的安全补丁都跟不上。如果这台服务器短期内动不了只能继续用那至少把远程桌面的安全策略做扎实限制来源IP、强密码、禁外网直接3389端口。远程桌面授权本身不是最大的风险点最大的风险反而是老系统长期暴露在公网环境下带来的安全问题。有条件的话尽早规划把它迁到2012 R2以上或者用跳板机、堡垒机把3389的暴露面收窄这样授权问题自然也会少很多。最后再分享一个我坚持了很多年的小习惯新装Server 2008 R2配置完远程桌面之后我总会顺手执行一次qwinsta看当前会话然后打开事件查看器把TerminalServices-Licensing来源的日志单独建一个视图再挂一条计划任务每天检查一次有没有新增的错误事件。这样120天倒计时刚开始出现异常时我就能收到预警而不是等用户全部连不上才被发现。这个习惯虽然简单但救过我很多次也值得你试一下。