当前位置:首页 > 前端开发 > 正文

Windows短连接服务器报错122.112怎么办?,是什么原因

112错误本质是Windows云服务器RDP短连接在握手阶段被拒绝或网络层阻断,多数情况下源于安全组策略未放行3389、RDP服务异常停止、或NLA认证失败,按”网络可达性→服务可用性→认证有效性”顺序排查可在较短时间内定位问题。

远程连接Windows云服务器报错122.112怎么办:根因定位

错误码122.112到底在说什么

很多运维同学第一次看到122.112这个报错,第一反应是”这是Windows系统原生的错误码吗”,其实它更像是远程桌面客户端在连接握手阶段收到的一个综合状态反馈,并不是某个单一组件抛出的,它背后通常藏着三类问题:

  • 网络层:从客户端到云服务器3389端口的TCP链路在某个节点被掐断
  • 服务层:云服务器上的RDP服务没在跑,或者3389端口没在监听
  • 认证层:NLA(网络级身份验证)握手失败,服务端直接拒绝建立会话

据统计,相当一部分122.112类报错最终定位到安全组策略未放行3389端口或放行范围错误,其次是RDP服务因系统更新后未自动启动。

Windows服务器短连接超时怎么解决的第一步:验证网络可达性

不要急着改配置,先确认链路通不通,在你本地的PowerShell或CMD里跑一条命令:

Test-NetConnection -ComputerName 你的公网IP -Port 3389

看返回的TcpTestSucceeded字段:

  • True:网络层通的,问题在服务端RDP或认证层
  • False:网络层被拦截,重点查安全组、ACL、本地防火墙

如果嫌PowerShell麻烦,也可以用telnet:

telnet 你的公网IP 3389

黑屏闪一下说明通,连接失败说明被拦。

安全组与ACL:最常见的拦截元凶

阿里云Windows服务器122.112错误的安全组排查

云平台的安全组是绝大多数短连接报错的”第一道闸门”,以阿里云为例,操作路径是:

  1. 登录ECS控制台
  2. 找到对应实例,点击实例ID进入详情
  3. 切到「安全组」标签页
  4. 点击安全组ID进入规则配置
  5. 检查入方向规则

需要确认的几个关键点:

  • 协议类型:选择TCP(不是UDP,不是全部)
  • 端口范围:3389/3389(如果你改过RDP端口,填实际端口)
  • 授权对象:建议填你本地的出口公网IP而不是0.0.0.0/0,安全又省心
  • 优先级:如果有拒绝规则优先级更高,放行规则会被覆盖

西西安全、华为云的逻辑基本一致,只是入口位置不同,西西安全在「云服务器CVM」→「安全组」,华为云在「弹性云服务器ECS」→「安全组」。

内核级防火墙与云平台ACL的协同检查

安全组放行了还不行,Windows自带的防火墙也可能拦路,从VNC或控制台远程登录进系统后,在PowerShell(管理员)里执行:

Windows短连接服务器报错122.112怎么办?,是什么原因 第1张

正常情况下应该看到RemoteDesktop-UserMode-In-TCP这条规则是Enabled: True且Action: Allow,如果不是:

Enable-NetFirewallRule -DisplayGroup "Remote Desktop"

一条命令搞定。

行业共识认为,云服务器短连接类报错中,相当一部分比例的根因最终落在”安全组放行了,但系统防火墙没放行”这种双层策略不一致上。

RDP服务状态与端口监听验证

检查3389端口的监听状态

网络通了、防火墙开了,接下来要看RDP服务到底在不在跑,在服务器本地PowerShell执行:

Get-Service -Name TermService | Select-Object Status, StartType

期望看到Status: Running和StartType: Automatic,如果状态是Stopped:

Start-Service -Name TermService

再确认端口监听:

Get-NetTCPConnection -LocalPort 3389 -State Listen

有返回结果说明监听正常;没返回说明RDP服务虽然起来了但没绑上端口,这种情况多见于注册表里PortNumber被改过。

Windows短连接服务器报错122.112怎么办?,是什么原因 第2张

查一下注册表确认:

Get-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name PortNumber

默认值是3389(十六进制D3D),如果被人改成别的端口,安全组和防火墙也得同步改,否则连不上是正常的。

RDP服务的依赖项与启动失败排查

有时候Start-Service会报错,说依赖服务没起来,RDP依赖Remote Desktop Services UserMode Port Redirector和Remote Desktop Services几个子服务,一次性把相关服务都拉起来:

Get-Service -Name "TermService","SessionEnv","UmRdpService" | Start-Service

如果还是起不来,看事件日志:

Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational" -MaxEvents 20 | Format-List TimeCreated, Message

这里通常能看到具体报错原因,比如证书问题、权限问题等。

认证层与账户状态:NLA的坑

NLA(网络级身份验证)的开关

NLA是个好东西,能挡掉一部分暴力免费,但它也是122.112报错的常客,当客户端版本较老、或CredSSP协商失败时,NLA会直接拒绝建立会话,表现就是连接超时或报错。

从VNC登录后,右键「此电脑」→「属性」→「远程」,看「仅允许运行使用网络级身份验证的远程桌面的计算机连接」这个勾,临时取消勾选测试一下,如果能连上,说明问题在NLA协商。

Windows短连接服务器报错122.112怎么办?,是什么原因 第3张

也可以用注册表方式查:

Get-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name UserAuthentication

0表示关闭NLA,1表示开启。

业内专家指出,NLA在混合客户端环境下(如旧版Windows、macOS的RDP客户端)协商失败率较高,临时关闭NLA是快速恢复连接的常见手段,但长期建议升级客户端或配置正确的CredSSP策略。

账户锁定与密码策略

连续输错密码触发账户锁定策略,也会导致连不上,查一下:

Get-LocalUser -Name 你的用户名 | Select-Object Name, Enabled, LockoutEnabled

如果Enabled: False或账户被锁,解锁:

Unlock-LocalUser -Name 你的用户名 Enable-LocalUser -Name 你的用户名

另外确认账户有远程登录权限,在「本地用户和组」里看用户属性→「隶属于」标签,确认在Remote Desktop Users组里,或者直接是Administrators。

实操排查路径与命令清单

排查顺序对照表

排查阶段 检查项 工具/命令 期望结果
网络层 3389端口可达性 Test-NetConnection -Port 3389 TcpTestSucceeded: True
安全组 入方向3389放行 云控制台安全组规则 放行规则存在且优先级最高
系统防火墙 RDP规则启用 Get-NetFirewallRule -DisplayGroup "Remote Desktop" Enabled: True
服务状态 TermService运行 Get-Service TermService Status: Running
端口监听 3389在监听 Get-NetTCPConnection -LocalPort 3389 有Listen状态连接
认证层 NLA状态 注册表UserAuthentication值 0或1对应预期
账户状态 账户未锁定 Get-LocalUser Enabled: True

关键命令速查

# 一键体检脚本(管理员运行) Write-Host "=== 网络监听 ===" Get-NetTCPConnection -LocalPort 3389 -State Listen -ErrorAction SilentlyContinue Write-Host "=== RDP服务 ===" Get-Service TermService | Format-Table Status, StartType Write-Host "=== 防火墙规则 ===" Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Where-Object Enabled -eq True | Select-Object DisplayName, Action Write-Host "=== NLA状态 ===" (Get-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name UserAuthentication).UserAuthentication Write-Host "=== RDP端口 ===" (Get-ItemProperty -Path "HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" -Name PortNumber).PortNumber

把这段贴进PowerShell跑一下,五分钟就能拿到一份诊断快照,比一项项点界面快得多。

Q&A:远程连接Windows云服务器报错122.112高频问题

Q1:远程连接Windows云服务器报错122.112,但安全组已经放行3389了,还有什么原因?

A:安全组只是第一层,继续查Windows系统防火墙的RDP规则是否启用、TermService服务是否在运行、3389端口是否在监听、NLA是否因客户端版本过老导致协商失败,建议按本地的Test-NetConnection结果判断是网络层还是服务层问题,再对症处理。

Q2:Windows服务器短连接超时怎么解决最快?

A:最快路径是先用Test-NetConnection -ComputerName 公网IP -Port 3389判断链路状态,返回True就跳过网络层,直接从VNC登录查服务和防火墙;返回False就回到安全组和ACL排查,不要盲目重启服务器,重启解决不了配置类问题。

Q3:改过RDP默认端口后连不上,安全组也改了,是什么问题?

A:除了安全组,还要同步改Windows防火墙的入站规则,默认的RemoteDesktop-UserMode-In-TCP规则绑死3389,改端口后这条规则失效,需要新建一条入站规则放行新端口,或者修改现有规则的本地端口,同时注册表HKLM:SystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp下的PortNumber值必须与新端口一致,重启TermService服务后生效。

112报错的排查核心是分层定位——网络层先通,服务层在跑,认证层握手成功,三层都满足才能稳定连接。

0