Windows Server: Resolving Remote Desktop (RDP) Connection Failures / Windows 服务器:解决远程桌面 (RDP) 连接失败 / Windows Server: Устранение сбоев подключения к удалённому рабочему столу (RDP)

Windows Server, RDP, Remote Desktop, 远程桌面, 远程连接故障, удалённый рабочий стол, troubleshooting, firewall, TermService, NLA, port 3389, PowerShell 0 この回答はお役に立ちましたか?

Problem Description / 问题描述 / Описание проблемы

Remote Desktop Protocol (RDP) is one of the most critical services on any Windows Server. When RDP connections fail, administrators lose direct access to the server, which can halt maintenance, deployments, and incident response. Common symptoms include:

远程桌面协议 (RDP) 是任何 Windows 服务器上最关键的服务之一。当 RDP 连接失败时,管理员将失去对服务器的直接访问,这可能会中断维护、部署和事件响应。常见症状包括:

Протокол удалённого рабочего стола (RDP) является одним из наиболее важных сервисов на любом сервере Windows. Когда подключение по RDP не удаётся, администраторы теряют прямой доступ к серверу, что может привести к остановке обслуживания, развёртывания и реагирования на инциденты. Распространённые симптомы:

  • "This computer can't connect to the remote computer" — 无法连接到远程计算机 — Не удаётся подключиться к удалённому компьютеру
  • "The remote computer is not available" — 远程计算机不可用 — Удалённый компьютер недоступен
  • "An internal error has occurred" — 出现内部错误 — Произошла внутренняя ошибка
  • Connection hangs at "Configuring remote session" — 连接在"正在配置远程会话"处挂起 — Подключение зависает на этапе «Настройка удалённого сеанса»
  • Connection drops immediately after authentication — 身份验证后连接立即断开 — Соединение разрывается сразу после аутентификации

Solution Steps / 解决步骤 / Решение

Step 1: Verify the RDP Service Is Running / 步骤一:验证 RDP 服务是否正在运行 / Шаг 1: Убедитесь, что служба RDP запущена

Connect to the server via console access (VNC/KVM from your hosting panel) or PowerShell remoting, then check the RDP service status.

通过控制台访问(托管面板中的 VNC/KVM)或 PowerShell 远程连接到服务器,然后检查 RDP 服务状态。

Подключитесь к серверу через консольный доступ (VNC/KVM из панели хостинга) или удалённый PowerShell, затем проверьте состояние службы RDP.

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

If the service is stopped, start it and set it to automatic startup:

如果服务已停止,请启动它并将其设置为自动启动:

Если служба остановлена, запустите её и установите автоматический запуск:

Set-Service -Name TermService -StartupType Automatic
Start-Service -Name TermService

Step 2: Confirm RDP Is Enabled in System Settings / 步骤二:确认系统设置中已启用 RDP / Шаг 2: Убедитесь, что RDP включён в настройках системы

Run the following PowerShell command to verify RDP is enabled:

运行以下 PowerShell 命令以验证 RDP 是否已启用:

Выполните следующую команду PowerShell для проверки включения RDP:

Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections

A value of 0 means RDP is enabled; 1 means it is disabled. To enable RDP:

值为 0 表示 RDP 已启用;1 表示已禁用。要启用 RDP:

Значение 0 означает, что RDP включён; 1 — отключён. Чтобы включить RDP:

Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0

Step 3: Check Windows Firewall Rules / 步骤三:检查 Windows 防火墙规则 / Шаг 3: Проверьте правила брандмауэра Windows

The firewall must allow inbound connections on TCP port 3389 (default). Verify with:

防火墙必须允许 TCP 端口 3389(默认)的入站连接。使用以下命令验证:

Брандмауэр должен разрешать входящие подключения на TCP-порту 3389 (по умолчанию). Проверьте:

Get-NetFirewallRule -DisplayName '*Remote Desktop*' | Select-Object DisplayName, Enabled, Direction, Action

If the rules are disabled, enable them:

如果规则已禁用,请启用它们:

Если правила отключены, включите их:

Enable-NetFirewallRule -DisplayName 'Remote Desktop - User Mode (TCP-In)'
Enable-NetFirewallRule -DisplayName 'Remote Desktop - User Mode (UDP-In)'

Important: If you use a third-party firewall or a cloud provider's security group/network ACL, ensure port 3389 is also allowed there.

重要提示:如果您使用第三方防火墙或云提供商的安全组/网络 ACL,请确保端口 3389 在那里也被允许。

Важно: Если вы используете сторонний брандмауэр или группу безопасности/сетевые ACL облачного провайдера, убедитесь, что порт 3389 также разрешён там.

Step 4: Verify the Listening Port / 步骤四:验证监听端口 / Шаг 4: Проверьте порт прослушивания

Confirm that the server is actively listening on the expected RDP port:

确认服务器正在预期的 RDP 端口上主动监听:

Убедитесь, что сервер активно прослушивает ожидаемый порт RDP:

Get-NetTCPConnection -LocalPort 3389 -State Listen

If no results are returned, the RDP listener may be corrupted. Reset it by restarting the TermService or by running:

如果没有返回结果,RDP 监听器可能已损坏。通过重启 TermService 或运行以下命令来重置它:

Если результатов нет, прослушиватель RDP может быть повреждён. Сбросьте его, перезапустив TermService или выполнив:

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 3389
Restart-Service -Name TermService -Force

Step 5: Check for NLA (Network Level Authentication) Issues / 步骤五:检查 NLA(网络级别身份验证)问题 / Шаг 5: Проверьте проблемы NLA (аутентификация на сетевом уровне)

If you receive errors like "The remote computer requires Network Level Authentication", either enable NLA on the client or disable it on the server (temporarily for troubleshooting):

如果您收到类似"远程计算机需要网络级别身份验证"的错误,请在客户端启用 NLA 或在服务器上禁用它(临时用于故障排除):

Если вы получаете ошибки вида «Удалённый компьютер требует аутентификацию на сетевом уровне», включите NLA на клиенте или отключите его на сервере (временно для устранения неполадок):

Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 0

Note: Re-enable NLA after troubleshooting for better security.

注意:故障排除后请重新启用 NLA 以提高安全性。

Примечание: После устранения неполадок снова включите NLA для повышения безопасности.

Step 6: Restart RDP via Console Access / 步骤六:通过控制台访问重启 RDP / Шаг 6: Перезапустите RDP через консольный доступ

If you have console access (KVM/VNC/IPMI), run this quick reset script:

如果您有控制台访问权限(KVM/VNC/IPMI),请运行此快速重置脚本:

Если у вас есть консольный доступ (KVM/VNC/IPMI), выполните этот скрипт быстрого сброса:

# RDP Quick Reset Script / RDP 快速重置脚本 / Скрипт быстрого сброса RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0
Enable-NetFirewallRule -DisplayName 'Remote Desktop - User Mode (TCP-In)'
Enable-NetFirewallRule -DisplayName 'Remote Desktop - User Mode (UDP-In)'
Set-Service -Name TermService -StartupType Automatic
Restart-Service -Name TermService -Force
Write-Host 'RDP has been reset. Try connecting now.' -ForegroundColor Green
Write-Host 'RDP 已重置。请立即尝试连接。' -ForegroundColor Green
Write-Host 'RDP был сброшен. Попробуйте подключиться сейчас.' -ForegroundColor Green

Additional Tips / 附加提示 / Дополнительные рекомендации

  • Change the default port: If your server faces constant brute-force attacks on port 3389, consider changing the RDP port in the registry at HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber. Remember to update your firewall rules accordingly.
    更改默认端口:如果您的服务器在端口 3389 上遭受持续的暴力破解攻击,请考虑在注册表中更改 RDP 端口。请记得相应更新防火墙规则。
    Измените порт по умолчанию: если ваш сервер постоянно подвергается атакам перебора на порту 3389, рассмотрите возможность изменения порта RDP в реестре. Не забудьте обновить правила брандмауэра.
  • Use RD Gateway: For production environments, deploy a Remote Desktop Gateway to broker connections over HTTPS (port 443), eliminating the need to expose port 3389 to the internet.
    使用 RD 网关:对于生产环境,请部署远程桌面网关以通过 HTTPS(端口 443)代理连接,从而无需将端口 3389 暴露在互联网上。
    Используйте шлюз RD: для производственных сред разверните шлюз удалённого рабочего стола для проксирования подключений через HTTPS (порт 443), что устраняет необходимость открывать порт 3389 в интернете.
  • Monitor Event Viewer: Check Event Viewer → Applications and Services Logs → Microsoft → Windows → TerminalServices-LocalSessionManager for detailed RDP connection logs.
    监控事件查看器:在事件查看器 → 应用程序和服务日志 → Microsoft → Windows → TerminalServices-LocalSessionManager 中查看详细的 RDP 连接日志。
    Просматривайте журнал событий: проверьте Просмотр событий → Журналы приложений и служб → Microsoft → Windows → TerminalServices-LocalSessionManager для получения подробных журналов подключений RDP.
  • Keep Windows updated: RDP vulnerabilities (such as BlueKeep — CVE-2019-0708) can be exploited if the server is not patched. Always apply the latest Windows Updates.
    保持 Windows 更新:如果服务器未打补丁,RDP 漏洞(如 BlueKeep — CVE-2019-0708)可能被利用。请始终应用最新的 Windows 更新。
    Обновляйте Windows: уязвимости RDP (такие как BlueKeep — CVE-2019-0708) могут быть использованы, если сервер не обновлён. Всегда устанавливайте последние обновления Windows.
  • Use PowerShell Remoting as a fallback: If RDP is unavailable but WinRM is configured, you can manage the server remotely via Enter-PSSession -ComputerName YourServer.
    使用 PowerShell 远程处理作为备选方案:如果 RDP 不可用但 WinRM 已配置,您可以通过 Enter-PSSession -ComputerName YourServer 远程管理服务器。
    Используйте удалённый PowerShell как запасной вариант: если RDP недоступен, но WinRM настроен, вы можете управлять сервером через Enter-PSSession -ComputerName YourServer.

この回答はお役に立ちましたか?

チケット送信

サポートが必要な場合はチケットを送信してください。サポートチームが対応します。

チケット送信