1. 先弄清这台 Server 2019 到底卡在哪
刚把 Windows Server 2019 装好、远程桌面也能连上,兴冲冲发给同事账号让对方一起登,结果两个人一连,其中一台就被顶下来,或者直接弹一句"连接数已达上限"。这不是配置写错了,而是 Server 系统本身的默认设计在起作用。
Windows Server 2019 的远程桌面默认运行在管理会话模式下,只给两个会话槽位:一个留给本地控制台管理员,另一个留给远程连进来的第二个人。第三个人再连,系统就会把先到的某个会话挤掉,而不是拒绝新连接——所以现象往往是"我明明在操作,突然断线了",而不是明确的报错。这个机制在服务器运维里叫"双管理会话限制",它的初衷是方便管理员做应急维护,不是拿来当多人办公桌面用的。
标题里说的"开启多用户远程",本质就是把这个两会话的天花板撑开到能容纳更多并发用户。这件事其实有三条路:正规的远程桌面服务授权路线、社区流传的第三方会话扩展组件、以及干脆换一种架构用别的方式替代远程桌面。三条路的成本、合规性和稳定性差别很大,选错方向后期返工非常痛苦,所以我先把它们摊开讲清楚,再进入具体的动手环节。
这篇笔记适合刚接触服务器、准备把这台机器当多人共用跳板机或者小型办公终端来用的人。我会把安装完成之后的每一步都写下来,包括命令、参数、注意点和我自己踩过的坑,你可以直接照着抄,也可以按自己的环境做取舍。全程假设你已经完成了系统安装并能用管理员账号登录,我们从"装完之后"这个节点接着往下走。
2. 动手之前,先把三条路线选明白
2.1 正规路线:远程桌面服务加授权
这是唯一在商业环境里站得住脚的方案。核心动作是给服务器添加**远程桌面服务(Remote Desktop Services,简称 RDS)**角色,然后搭建 RD 授权服务器,购买并导入对应数量的RDS 客户端访问许可(RDS CAL)。
它的原理也不复杂:Windows Server 本身完全具备多会话能力,只是默认没有开启。一旦装了 RDS 角色并把授权模式配好,系统就知道"我是被允许开多个会话的",于是放开限制。每个登录的普通用户需要一份 CAL,按用户或按设备两种模式买,按用户更适合"人固定、设备不固定"的场景,按设备更适合"设备固定、人轮换"的场景,比如车间里的公用终端。
RDS 装好之后有120 天宽限期,这期间不配授权服务器也能跑多用户,但到期后如果不导入 CAL,服务会直接拒绝连接,而且这时候再想补授权,用户体验会非常割裂。所以我的建议是:只要确定要长期多人用,就在宽限期内把授权服务器一起搭好,别拖到最后一天。
2.2 社区路线:第三方会话扩展组件
另一条路是社区里流传很久的第三方组件,思路是替换系统里的会话管理逻辑,让 Server 直接以多会话模式运行,跳过 RDS 授权这一环。它的优点是部署快、不花钱、对系统改动小;缺点也很明确——授权上不合规,系统更新后可能失效,杀毒软件可能误报,而且不同版本号对应的组件版本不一致,打错了轻则无效重则远程桌面彻底连不上。
这条路我只建议用在内网实验机、个人学习环境、临时验证场景。真要在公司里给同事开多用户远程办公,老老实实走 RDS。这不是技术洁癖,是我见过太多"图省事装了第三方组件,某次系统自动更新之后全体同事连不上,半夜被叫起来救火"的真实案例。
2.3 替代路线:换个思路绕开远程桌面
第三条路是不跟远程桌面较劲,改用其他共享桌面的方式。常见做法有几种:一是用虚拟机或者云主机给每个人开一台独立实例,各自远程各自的机器,互不干扰;二是用支持多会话的第三方远程工具,把同一台物理机的桌面共享给多个操作者;三是把重活放到应用层,比如用 Web 化的文件管理、Web 化的开发环境,用户只需要浏览器就够了,根本不占远程桌面会话。
这几种方案各有适用面。独立实例的好处是隔离彻底,一个人把系统搞崩不影响别人,代价是硬件开销成倍增长;Web 化方案适合轻量办公,但不适合需要跑重型桌面软件的岗位。选哪条,取决于你要让用户在这台服务器上"干什么",而不是简单追求"能连上就行"。
2.4 三条路线的对比与取舍
| 方案 | 合规性 | 部署难度 | 成本 | 稳定性 | 适用场景 |
|---|---|---|---|---|---|
| RDS 加正规授权 | 合规 | 中等 | 需要购买 CAL | 高 | 企业办公、长期使用 |
| 第三方会话扩展组件 | 不合规 | 低 | 免费 | 中,更新易失效 | 内网实验、个人学习 |
| 多实例或 Web 化替代 | 合规 | 视方案而定 | 中到高 | 高 | 隔离要求高、轻量办公 |
我自己的做法是:生产环境一律 RDS,测试机可以用第三方组件快速验证流程,但绝不上线。这个边界划清楚之后,后面所有操作才有意义。
3. 装完系统后,先把地基打牢
3.1 计算机名、时区和时间同步
很多人装完系统直接开远程,忽略了三件小事,结果后面吃了大亏。第一件是计算机名,默认一长串随机字符,改成便于识别的名字,比如SRV-OFFICE-01,以后远程连接、看日志、排查问题时能省很多口舌。改完需要重启生效,所以最好在装完系统的第一时间就改掉。
第二件是时区。服务器时间不对会直接导致两类问题:日志时间戳错乱,排查故障时根本对不上;域环境或者证书认证相关操作因为时间偏差过大而失败。装完先把时区设成所用地区,再顺手配一下时间同步。
第三件是时间同步源。Windows 自带的时间服务默认指向外部时间源,但服务器通常在内网,走不通外网就一直在漂移。可以手动指定内网 NTP 服务器,或者指定能访问到的公共时间源。命令行操作如下:
w32tm /config /manualpeerlist:"ntp.aliyun.com,time.windows.com" /syncfromflags:manual /reliable:yes /update net stop w32time net start w32time w32tm /resync w32tm /query /status最后一条命令会输出当前时间源和同步状态,看到Source是你配置的地址、Last Successful Sync Time是刚刚,就说明生效了。如果显示同步失败,先确认 UDP 123 端口没被防火墙拦掉,这一步我遇到过两次,都是出站规则没放行。
提示:域环境里时间同步要跟着域控制器走,不要手工把域成员服务器指向外部时间源,否则可能引发认证异常。改之前先确认这台机器是不是域成员。
3.2 网络位置、防火墙与远程桌面端口
远程桌面能不能连上,九成问题出在网络和防火墙这两个地方。先确认服务器的网络位置是"专用网络"而不是"公用网络",因为 Windows 防火墙对不同网络位置应用不同的规则集,公用网络下远程桌面规则默认更严格。
然后是远程桌面端口。默认 3389,暴露在公网上会被大量扫描,我的处理习惯是改成一个高位端口,比如 40000 以上。改法有两步,注册表里改端口号,防火墙里同步放行新端口:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 43389 /f netsh advfirewall firewall add rule name="RDP-Custom" dir=in action=allow protocol=TCP localport=43389改完必须重启远程桌面服务或者直接重启系统才生效。这里有个坑:如果你是通过远程桌面在做这些操作,改完端口的那一刻你的当前连接不会立刻断,但重启服务之后就需要用新端口重连了。改端口之前,一定先确认新端口的防火墙规则已经加好,否则重连不上就只剩控制台一条路。
还有一点,如果服务器在云上,除了系统防火墙,云平台的安全组也要放行新端口。我见过有人系统防火墙配了半天没效果,最后发现安全组只开了 3389。两个地方都要检查。
3.3 给自己留一条后路:快照与备份
在开始改任何跟远程桌面相关的配置之前,先做一份快照或者系统备份。这不是谨慎,是保命。远程桌面相关配置改错,最常见的后果就是"谁都连不上",包括你自己。如果这时候云控制台还能用,那还好办;如果是物理机,就得跑到机房插显示器,代价很大。
云服务器直接在控制台建一份快照,几十秒的事。物理机可以用系统自带的备份功能,或者干脆在虚拟机层面做一份快照。做完再动手,心里踏实得多。
4. 用户和权限:别拿 Administrator 裸奔
4.1 先建用户,再谈多用户
多人远程的前提是"有多个人",所以第一件事是建账号。控制面板或者命令行都行,命令行我更推荐,批量创建效率高:
net user zhangsan P@ssw0rd123 /add net user lisi P@ssw0rd456 /add net localgroup "Remote Desktop Users" zhangsan /add net localgroup "Remote Desktop Users" lisi /add这几条命令做的是:建两个本地账号,然后把他们加进Remote Desktop Users组。只有属于这个组(或者 Administrators 组)的账号才有资格发起远程桌面连接,普通 Users 组账号默认是连不上的,这是很多人"账号密码都对但就是连不上"的根源。
注意:不要直接给每个用户 Administrators 权限。给管理员权限意味着对方能改系统、装软件、看所有文件,一旦账号泄露或者误操作,后果不可控。日常使用一律普通用户,需要提权时再单独授权。
4.2 密码策略和账号安全的基本操作
本地账号的密码策略默认可能比较宽松,多人共用的机器建议手动收紧一点。可以强制密码复杂度、设置最短长度、限制登录失败次数。这些通过本地安全策略配置,路径是"本地安全策略 → 账户策略 → 密码策略"。
还有一个习惯值得养成:给每个用户单独建账号,绝不共用。共用账号的问题是出了事查不到人,日志里全是一个用户名,审计等于没有。看起来省事,实际是给自己埋雷。
如果这台服务器规模会扩大,比如要管理几十个账号,那就该考虑装AD 域服务了。域环境下账号统一管理、权限集中下发、登录审计清晰,是规模上去之后的必然选择。单机多用户用本地账号就够了,但一旦超过十来个人,域控的价值就体现出来了。
5. 正式开启多用户同时远程
5.1 先调组策略,把会话限制的开关找出来
在装 RDS 之前,有几个组策略项值得先看一眼,它们直接决定多会话行为。打开gpedit.msc,路径是"计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 连接"。
这里有几个关键项:
- 限制连接的数量:默认未启用,启用后可以指定最大并发会话数。装完 RDS 之后,这个值要和你的授权数量匹配。
- 将远程桌面服务用户限制到单独的远程桌面服务会话:启用后同一个用户只能有一个会话,禁用则允许同一账号多会话。多人共用账号的场景才会关心这个,正常一人一号的话保持默认即可。
- 允许用户通过使用远程桌面服务进行远程连接:这个必须是启用状态。
- 为远程桌面连接设置时限:可以设置空闲会话自动断开,避免会话被长期占用。
这些策略改完之后,执行gpupdate /force立即生效。我在测试环境里反复验证过,只改"限制连接的数量"并不足以在 Server 上开出多会话,它只是给 RDS 授权模式下的会话数设了一个上限,真正放开多会话的还是 RDS 角色本身。
5.2 装 RDS 角色并处理授权
这一步是正规路线的核心。打开服务器管理器,添加角色和功能,勾选"远程桌面服务",然后在角色服务里至少勾选远程桌面会话主机。如果这台机器还要兼做授权服务器,再把远程桌面授权一起勾上。安装过程会重启,重启后远程桌面就进入多会话模式了。
装完之后,在服务器管理器里能看到"远程桌面服务"这一项。此时系统处于 120 天宽限期,能正常多用户登录。要确认状态,可以在授权诊断里看:
# 查看当前授权模式和剩余宽限天数 wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting WHERE (__CLASS != "") CALL GetGracePeriodDays如果返回的天数在减少,说明宽限期在倒计时。要在宽限期内完成授权配置:先在一台机器上安装"远程桌面授权"角色并激活授权服务器,导入购买的 CAL,然后在会话主机上用组策略指定授权服务器地址。路径是"计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 远程桌面会话主机 → 授权",把"使用指定的远程桌面许可证服务器"启用并填上授权服务器的名称或 IP。
授权模式的选择也要注意:按用户模式适合人员固定、设备经常变的场景;按设备模式适合设备固定、人员轮换的场景。选错了会导致 CAL 数量对不上,实际可登录人数和买的数量不一致。
5.3 第三方组件路线的部署流程(仅限测试环境)
如果你只是想在内网实验机上一周内跑通流程,可以用社区组件快速验证。大致流程是:先确认系统版本号和内部版本号(winver命令可以看到),下载对应版本的组件包,以管理员身份运行安装脚本,安装完成后重启,再用检测脚本确认状态。检测脚本会输出每一行的状态,如果关键项显示不支持,说明组件版本和你的系统版本没对上。
这条路我必须再强调一次:只用于内网实验和个人学习,不要用于商业生产。原因前面说过,系统更新后组件可能失效,而且一旦某次更新把会话管理逻辑改了,你可能连正常的管理会话都进不去,只能靠控制台救。我自己的习惯是测试机上跑一遍流程、把原理搞明白,然后就换回正规路线。
5.4 怎么验证多用户真的能同时在线
配置完一定要实测,不能只看设置项。验证方法很简单:用两个不同的账号,从两台不同的设备(或者两个不同的远程桌面客户端实例)分别连接。连上之后,在服务器上执行:
query user这条命令会列出当前所有登录会话,包括会话名、用户名、会话 ID、状态和登录时间。如果你看到两个不同的用户名同时处于Active状态,说明多用户已经生效。如果第二个连接进来时第一个被顶掉,或者提示超出连接数,那就是还没配置到位,回到组策略和 RDS 角色那里再检查。
顺便说一个细节:query user看到的会话状态有Active(正在使用)和Disc(已断开但会话还在)两种。断开的会话仍然占用授权和资源,长时间不下线会拖慢服务器,所以最好配合组策略设置空闲会话超时,让断开的会话自动清理。
6. 踩过的坑和排查速查表
6.1 连接数超限、被顶下线
这是最典型的症状。表现有两种:一是明确提示"已达到最大连接数",二是当前会话突然断开、被新连接挤掉。前者通常是组策略里的连接数上限设小了,或者 RDS 授权没配好导致系统回退到默认两会话;后者多半是第三方组件没装成功,系统还在管理会话模式下运行。
排查顺序:先用query user看当前有几个会话;再检查 RDS 角色是否安装成功;然后看宽限期是否已过而授权未配。三个方向逐一排除,基本都能定位。
6.2 登录卡在"欢迎"界面不动
这个现象通常不是远程桌面本身的问题,而是用户配置文件加载失败或者组策略处理超时。常见诱因包括:用户配置文件目录权限异常、磁盘空间不足、登录脚本卡在网络路径上。可以先用管理员账号登录,看事件查看器里的应用程序日志,重点找 User Profile Service 相关的错误。
另一个容易被忽略的原因是时间偏差过大导致 Kerberos 认证失败。域环境下时间差超过默认容差,认证会直接失败,但表现出来可能只是"卡住"而不是明确报错。所以前面强调的时间同步,在这里就派上用场了。
6.3 凭据验证失败但密码明明是对的
先确认账号有没有在 Remote Desktop Users 组里,这是最常见的原因。其次确认账号有没有被锁定或者密码过期。再然后看是不是大小写或者输入法问题,这个听起来很傻,但实际遇到不少次。
如果是域账号,还要检查账号的"允许登录到"限制,有些管理员会在 AD 里限制账号只能登录特定机器,被限制的机器上远程连接就会失败。
6.4 端口和防火墙的隐形坑
改了远程桌面端口之后连不上,先确认三件事:注册表里的端口号改对了、防火墙规则放行了新端口、云平台安全组也放行了。这三者缺一不可,我踩过两次都是安全组漏配。
另外,如果服务器上有第三方安全软件或者主机防护,它们也会拦远程桌面连接,而且拦截日志不一定写在系统事件里,需要单独去它的控制台看。排查时可以把这类软件临时停掉验证一下。
6.5 常见问题速查表
| 症状 | 最可能原因 | 排查动作 |
|---|---|---|
| 提示超出最大连接数 | 组策略上限太小或 RDS 未生效 | 检查连接数策略、RDS 角色状态 |
| 会话被新连接顶掉 | 仍在管理会话模式 | 确认 RDS 角色是否安装、系统是否重启 |
| 卡在欢迎界面 | 配置文件或组策略问题 | 查应用程序日志的 User Profile Service 错误 |
| 密码正确但认证失败 | 账号不在 Remote Desktop Users 组 | net localgroup "Remote Desktop Users"查看 |
| 改端口后连不上 | 防火墙或安全组未放行 | 检查系统防火墙规则和云安全组 |
| 授权到期无法登录 | 宽限期结束且未导入 CAL | 配置授权服务器并导入授权 |
7. 长期运维的几个习惯
7.1 日志、审计和账号生命周期
多用户环境里,账号管理是长期工作。建议养成几个习惯:每季度清一次离职或者转岗人员的账号;定期检查 Remote Desktop Users 组的成员,发现多余的直接移除;开启登录审计,记录成功和失败的登录事件,出问题时能追溯。
登录审计通过本地安全策略或者组策略开启,路径是"计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 审核策略",把"审核登录事件"打开。开启之后,安全日志里会记录每次远程连接的来源 IP、账号和时间,排查异常登录时非常有用。
7.2 性能规划和硬件参考
多人远程对服务器的压力主要体现在 CPU、内存和磁盘 IO 上。经验值是:每个活跃的远程桌面用户,轻量办公场景大约需要 1 到 2 GB 内存,重度使用(浏览器多标签、办公套件、开发工具)大约 2 到 4 GB。CPU 方面,四到八个核心支撑十来个轻量用户问题不大,但如果有编译、渲染这类重负载,核心数要往上加。
磁盘是整个系统里最容易被忽略的瓶颈。多人同时读写,机械盘会明显拖慢体验,能上 SSD 就上 SSD。如果服务器还要跑数据库或者文件共享,建议把系统盘和数据盘分开,避免互相抢占 IO。
7.3 可扩展的方向
单机多用户跑顺之后,往下可以往几个方向扩展。一是域环境,把账号集中管理,权限统一下发;二是集群和故障转移,让多台服务器承担远程桌面角色,一台挂了另一台顶上;三是虚拟化,把每类工作负载拆到独立虚机上,隔离性和弹性都更好。
这些方向的实施复杂度比单机配置高不少,但底层逻辑是一脉相承的:先把单机的会话、授权、网络理清楚,再往上层堆架构,否则底层问题会在集群环境里被放大很多倍。
我用这套流程在几台服务器上跑过多用户远程,从最初的"两个人一连就掉线"到后来十几个人同时在线稳定运行,中间最大的教训不是技术本身,而是先备份再动手和不要在没配好授权的情况下长期使用。前者救过我两次,后者让我在授权到期那天避免了全员掉线的尴尬。如果你正准备做这件事,把这两条记住,剩下的照着步骤走就行。