Диагноз
RDP настроен. Порт открыт. Файрвол выключен. Подключение не устанавливается. «Удалённый компьютер не отвечает» — и тишина. Или хуже: подключается, но сразу обрывается с ошибкой аутентификации. Или просит пароль, ты вводишь правильный — и опять ничего.
RDP кажется простым протоколом, пока не начинаешь его настраивать. Тогда выясняется, что Windows Home его не поддерживает как сервер, что порт 3389 заблокирован провайдером, что NLA включён и не даёт зайти со старого клиента, что на Linux нужен отдельный сервер xrdp — и это только начало.
В этой статье — полный рецепт. Включишь RDP-сервер на Windows 10/11, подключишься с Windows, Linux, macOS и мобильных устройств, пробросишь порт через роутер, поменяешь стандартный порт 3389 и разберёшься с топ-6 ошибками, которые встречаются в 90% случаев.
Что понадобится:
- Windows 10/11 Pro, Enterprise или Education на стороне сервера (Home — не поддерживает RDP-сервер без костылей)
- Права локального администратора
- Для подключения снаружи: доступ к роутеру или белый IP
- 15–20 минут
Что будет в статье:
- Включение RDP на Windows 10 и Windows 11
- Добавление пользователей RDP
- Смена стандартного порта
- Подключение с Windows, Linux, macOS, Android и iOS
- RDP на Ubuntu: установка xrdp-сервера
- RDP Wrapper — как включить RDP на Windows Home
- Проброс порта через роутер
- Файл .rdp: создание и настройка
- Топ-6 ошибок с лечением
- Профилактика и безопасность
Почему болит: главные причины по которым RDP не работает
1. Windows Home — нет RDP-сервера
На Windows Home RDP-клиент есть, сервера — нет. Подключиться к другой машине можно, принять подключение — нельзя. Без RDP Wrapper или смены редакции Windows это не обойти штатными средствами.
2. RDP не включён в настройках системы
По умолчанию RDP выключен даже на Pro-версиях. Галочка в системных настройках должна быть активирована вручную — многие об этом забывают и идут сразу настраивать роутер.
3. Брандмауэр блокирует порт 3389
Windows Firewall по умолчанию блокирует входящие подключения на 3389. Когда включаешь RDP через системные настройки — правило создаётся автоматически. Если включаешь через реестр или GPO — создаёшь правило вручную, иначе подключения не дойдут.
4. NLA включён, клиент не поддерживает
Network Level Authentication (NLA) требует аутентификации до установки сессии. Старые клиенты (mstsc на XP, некоторые Linux-клиенты) NLA не поддерживают — и получают отказ без внятного объяснения.
5. Пользователь не добавлен в группу RDP
Подключаться по RDP могут только члены группы «Remote Desktop Users» или администраторы. Создал пользователя — не добавил в группу — получил ошибку аутентификации, хотя логин и пароль правильные.
6. Провайдер или роутер закрывает порт 3389
Некоторые провайдеры блокируют 3389 на уровне сети как «потенциально опасный». Решение — смена порта на нестандартный (например, 54321) и проброс через роутер.
Рецепт: настройка RDP от А до Я
Шаг 1. Включение RDP на Windows 10 и Windows 11
Через графический интерфейс
На Windows 10: правой кнопкой по «Этот компьютер» → «Свойства» → «Настройка удалённого доступа». Ставишь галочку «Разрешить подключения к этому компьютеру».
На Windows 11: Пуск → Параметры → Система → Удалённый рабочий стол → переключатель в положение «Вкл».
Через PowerShell (быстрее)
Открываешь PowerShell от имени администратора и выполняешь:
# Включить RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# Разрешить RDP через брандмауэр
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Проверить что RDP включён (должно вернуть 0)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections"
После выполнения RDP включён и порт 3389 открыт в брандмауэре Windows. Перезагрузка не нужна.
Через реестр (если нет PowerShell)
# В cmd от имени администратора:
reg add "HKLM\System\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh advfirewall firewall set rule group="remote desktop" new enable=Yes
Шаг 2. Добавление пользователей RDP
Через интерфейс
В настройках удалённого рабочего стола (куда ходил на шаге 1) есть кнопка «Выбрать пользователей». Жмёшь, добавляешь нужного пользователя. Администраторы добавляются автоматически.
Через PowerShell
# Добавить пользователя в группу RDP (замени "ИмяПользователя" на нужное):
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "ИмяПользователя"
# Проверить кто в группе:
Get-LocalGroupMember -Group "Remote Desktop Users"
# Через net (работает в cmd):
net localgroup "Remote Desktop Users" ИмяПользователя /add
Шаг 3. Смена стандартного порта RDP
Порт 3389 — первый, который сканируют боты. За сутки на него приходят тысячи попыток подбора паролей. Меняем на нестандартный.
# Через PowerShell (замени 54321 на свой порт):
$portNumber = 54321
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "PortNumber" -Value $portNumber
# Открыть новый порт в брандмауэре:
New-NetFirewallRule -DisplayName "RDP Custom Port" -Direction Inbound -Protocol TCP -LocalPort $portNumber -Action Allow
# Закрыть старый порт 3389 (опционально, но рекомендуется):
Disable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Через реестр (cmd):
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 54321 /f
netsh advfirewall firewall add rule name="RDP Custom" protocol=TCP dir=in localport=54321 action=allow
После смены порта — обязательно перезапусти службу RDP или перезагрузи машину.
# Перезапустить службу удалённого рабочего стола:
Restart-Service -Name "TermService" -Force
Шаг 4. Подключение по RDP с Windows
Через стандартный клиент mstsc
Нажимаешь Win+R, вводишь mstsc, жмёшь Enter. Открывается «Подключение к удалённому рабочему столу».
В поле «Компьютер» вводишь адрес: IP или имя компьютера. Если порт нестандартный — через двоеточие: 192.168.1.100:54321.
Жмёшь «Подключить», вводишь логин и пароль пользователя удалённой машины.
Через файл .rdp
Можно сохранить параметры подключения в файл и запускать одним кликом. В mstsc нажимаешь «Показать параметры» → вкладка «Общие» → «Сохранить как». Файл сохраняется с расширением .rdp.
Вручную файл .rdp выглядит так:
# Пример файла connection.rdp:
full address:s:192.168.1.100:54321
username:s:Администратор
screen mode id:i:2
desktopwidth:i:1920
desktopheight:i:1080
session bpp:i:32
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:0
redirectprinters:i:0
redirectclipboard:i:1
autoreconnection enabled:i:1
authentication level:i:2
Сохраняешь файл, дважды кликаешь — открывается подключение с уже заполненными параметрами.
authentication level:i:2 означает предупреждение при неверном сертификате, но подключение разрешено. Для продакшна ставь :i:1 — строгая проверка сертификата.Шаг 5. Подключение по RDP с Linux
Remmina — графический клиент
Самый удобный RDP-клиент для Linux. Устанавливается на Ubuntu/Debian:
sudo apt update
sudo apt install remmina remmina-plugin-rdp -y
Запускаешь Remmina, создаёшь новое подключение: Protocol → RDP, вводишь адрес, порт, логин, пароль. Сохраняешь и подключаешься.
FreeRDP — консольный клиент
Если нужен терминал или скрипт — FreeRDP твой выбор.
# Установка:
sudo apt install freerdp2-x11 -y
# Подключение (замени параметры на свои):
xfreerdp /v:192.168.1.100:54321 /u:Администратор /p:ПарольЗдесь /w:1920 /h:1080 /f
# Параметры:
# /v: <a href="https://it-apteka.com/dhcp-snooping-chto-jeto-takoe-i-kak-zashhitit-set-ot-rogue-dhcp-servera-2/" title="DHCP Snooping - что это такое и как защитить сеть от Rogue DHCP сервера" target="_blank" rel="noopener" data-wpil-monitor-id="1259">— адрес:порт сервера</a>
# /u: - имя пользователя
# /p: - пароль (можно не указывать - спросит при подключении)
# /w: /h: - разрешение экрана
# /f - полноэкранный режим
# /cert-ignore - игнорировать ошибки сертификата (для внутренней сети)
# Если NLA не нужен (старый сервер):
xfreerdp /v:192.168.1.100 /u:user /p:pass /sec:rdp
# Подключение с передачей локальной папки:
xfreerdp /v:192.168.1.100 /u:user /drive:home,/home/user/shared
RDP-клиент для Astra Linux
На Astra Linux (и других отечественных дистрибутивах на базе Debian) работает тот же FreeRDP:
# Astra Linux 1.7+:
sudo apt install freerdp2-x11 -y
xfreerdp /v:адрес_сервера /u:пользователь /p:пароль /cert-ignore
Если репозитории закрыты — устанавливай из ISO-образа дистрибутива или с официального сайта FreeRDP через deb-пакет.
Шаг 6. Подключение по RDP с macOS
Microsoft Remote Desktop
Официальный клиент от Microsoft, бесплатный. Скачиваешь из Mac App Store по запросу «Microsoft Remote Desktop».
После установки: жмёшь «+» → Add PC → вводишь адрес компьютера (с портом если нестандартный: 192.168.1.100:54321) → сохраняешь → двойной клик для подключения.
Шаг 7. Подключение с Android и iOS
Официальное приложение: Microsoft Remote Desktop — есть и в Google Play, и в App Store. Бесплатно.
Принцип тот же: добавляешь ПК, вводишь адрес и учётные данные, подключаешься. На мобильных экранах удобно использовать режим «Touch» вместо «Mouse» — жест касания работает как клик мышью.
Шаг 8. RDP-сервер на Ubuntu (xrdp)
Ubuntu из коробки не умеет принимать RDP-подключения. Нужен xrdp — открытая реализация RDP-сервера.
Установка xrdp
# Обновить пакеты:
sudo apt update && sudo apt upgrade -y
# Установить xrdp:
sudo apt install xrdp -y
# Добавить xrdp в группу ssl-cert (нужно для работы с сертификатами):
sudo adduser xrdp ssl-cert
# Запустить и включить автозапуск:
sudo systemctl enable xrdp
sudo systemctl start xrdp
# Проверить статус:
sudo systemctl status xrdp
После успешного запуска увидишь строку «Active: active (running)».
Открыть порт в UFW
# Разрешить порт 3389 в брандмауэре Ubuntu:
sudo ufw allow 3389/tcp
sudo ufw reload
# Проверить правила:
sudo ufw status
Настройка сессии для GNOME
По умолчанию xrdp открывает сессию xfce или базовый X11. Если хочешь GNOME — нужна дополнительная настройка.
# Установить GNOME (если не установлен):
sudo apt install ubuntu-desktop -y
# Создать файл сессии для пользователя (замени username):
echo "gnome-session" > /home/username/.xsession
chmod +x /home/username/.xsession
# Перезапустить xrdp:
sudo systemctl restart xrdp
Устранение чёрного экрана после подключения к Ubuntu
Самая частая проблема с xrdp на Ubuntu — чёрный экран после ввода пароля. Лечится так:
# Открыть файл конфигурации xrdp:
sudo nano /etc/xrdp/startwm.sh
# Добавить перед строкой exec:
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
# Сохранить (Ctrl+O, Enter, Ctrl+X) и перезапустить:
sudo systemctl restart xrdp
Шаг 9. RDP Wrapper — RDP-сервер на Windows Home
Windows Home не поддерживает входящие RDP-подключения штатно. RDP Wrapper — утилита, которая обходит это ограничение, не изменяя системные файлы.
Установка RDP Wrapper
# 1. Скачиваешь последний релиз RDPWrap с GitHub:
# https://github.com/stascorp/rdpwrap/releases
# Файл: RDPWrap-v1.6.2.zip (или актуальная версия)
# 2. Распаковываешь и запускаешь install.bat от имени администратора
# 3. Проверяешь статус через RDPConf.exe:
# "Fully supported" - всё работает
# "Not supported" - нужно обновить rdpwrap.ini
Обновление rdpwrap.ini при «Not supported»
# Скачать актуальный конфиг:
# https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini
# Сохранить в C:\Program Files\RDP Wrapper\rdpwrap.ini (заменить существующий)
# Перезапустить службу:
net stop TermService && net start TermService
Шаг 10. Проброс RDP через роутер
Если нужно подключаться к домашнему или офисному ПК из интернета — нужен проброс порта на роутере (Port Forwarding).
Что нужно знать до начала
| Что нужно | Зачем |
|---|---|
| Белый (внешний) IP от провайдера | Без него подключиться снаружи не выйдет. Серый IP за NAT провайдера — нужен VPN или tunneling-сервис |
| Статический локальный IP на ПК | Иначе IP поменяется после перезагрузки и проброс перестанет работать |
| Нестандартный порт RDP | 3389 часто блокируют провайдеры, плюс это honeypot для ботов |
Назначить статический IP на ПК
# Через PowerShell (замени значения на свои):
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 192.168.1.100 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 8.8.8.8,8.8.4.4
Настройка проброса порта на роутере
Интерфейс у каждого роутера свой, но логика одинакова. Ищешь раздел «Виртуальные серверы» / «Port Forwarding» / «Проброс портов».
| Поле | Значение |
|---|---|
| Внешний порт | 54321 (тот нестандартный, что задал) |
| Внутренний IP | 192.168.1.100 (локальный IP твоего ПК) |
| Внутренний порт | 54321 (совпадает с тем, что задал в реестре) |
| Протокол | TCP |
Сохраняешь. Теперь подключение на внешний_IP:54321 будет попадать на твой ПК.
Осложнения: ошибки RDP и их лечение
Ошибка 1: «Удалённый компьютер не отвечает» / Connection timed out
Почему: Порт закрыт брандмауэром, RDP не включён, или неверный IP/порт.
Диагностика и лечение:
# С машины-клиента проверь доступность порта (замени адрес и порт):
Test-NetConnection -ComputerName 192.168.1.100 -Port 3389
# Результат:
# TcpTestSucceeded: True - порт открыт, RDP должен работать
# TcpTestSucceeded: False - порт закрыт, смотришь брандмауэр
# На сервере - проверь что служба запущена:
Get-Service -Name TermService
# Запустить если остановлена:
Start-Service -Name TermService
# Проверить правила брандмауэра:
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Select-Object DisplayName, Enabled
# Проверить что RDP слушает порт:
netstat -an | findstr 3389
# Должна быть строка: TCP 0.0.0.0:3389 LISTENING
Ошибка 2: «Учётные данные не работают» / The credentials that were used to connect did not work
Почему: Пользователь не в группе RDP, пустой пароль, или политика паролей не позволяет.
# Проверить что пользователь в группе:
Get-LocalGroupMember -Group "Remote Desktop Users"
# Добавить если нет:
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "ИмяПользователя"
# Разрешить вход с пустым паролем (ТОЛЬКО для изолированной сети!):
# secpol.msc -> Локальные политики -> Параметры безопасности
# "Учётные записи: разрешить использование пустых паролей..." -> Отключить
Ошибка 3: «Ошибка аутентификации. Не удалось выполнить запрошенную функцию» (CredSSP)
Почему: Клиент или сервер не обновлён после патча CVE-2018-0886 — версии CredSSP не совпадают. Чаще всего после обновления Windows на одной из сторон.
# Быстрое временное решение - снизить требования NLA на сервере:
# (через gpedit.msc на сервере)
# Конфигурация компьютера -> Административные шаблоны ->
# Система -> Передача учётных данных ->
# "Защита от атак с использованием шифрования Oracle" -> Уязвимый
# Или через реестр:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters /v AllowEncryptionOracle /t REG_DWORD /d 2 /f
Ошибка 4: «Превышен лицензионный лимит» / Remote Desktop Session Host — нет лицензии
Почему: Пытаешься подключить более двух пользователей одновременно, или слетела временная лицензия (120 дней Trial). Актуально для Windows Server.
# Сброс льготного периода лицензирования (на Windows Server):
# Предупреждение: делать только на тестовых стендах без лицензии
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /f
# После перезагрузки льготный период (120 дней) сбрасывается
# Для рабочей среды - нужна лицензия RDS CAL
# Настраивается в: Server Manager -> Remote Desktop Services -> Licensing
Ошибка 5: чёрный экран после подключения (Windows)
Почему: Конфликт видеодрайвера или зависший процесс explorer.exe в сессии.
# После подключения при чёрном экране:
# Нажми Ctrl+Alt+End -> Диспетчер задач (или Ctrl+Shift+Esc)
# File -> Run new task -> explorer.exe -> OK
# Если не помогло - перезапусти сессию через PowerShell на сервере:
# Найти ID сессии:
query session
# Завершить зависшую сессию (замени ID):
logoff 2
# Перезапустить видеосервисы:
Restart-Service -Name UxSms
Ошибка 6: RDP подключается, но сразу отваливается
Почему: Переполнен лимит сессий (по умолчанию 2 на Windows), или служба TermService падает из-за нехватки ресурсов.
# Проверить активные сессии на сервере:
query session /server:localhost
# Завершить зависшие сессии:
logoff ИмяПользователя
# Посмотреть логи TermService:
Get-EventLog -LogName System -Source "Microsoft-Windows-TerminalServices*" -Newest 20 | Format-List TimeGenerated, Message
# Или через Event Viewer:
# eventvwr.msc -> Журналы Windows -> Система -> фильтр по источнику "TermService"
Профилактика: безопасность и стабильность RDP
Смени порт и ограничь доступ по IP
Порт 3389 сканируется непрерывно. Нестандартный порт (шаг 3) уже отсекает 99% автоматических атак. Дополнительно — ограничь доступ к RDP только с определённых IP через брандмауэр.
# Разрешить RDP только с конкретного IP (замени порт и IP):
New-NetFirewallRule -DisplayName "RDP from office only" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 54321 `
-RemoteAddress 203.0.113.10 `
-Action Allow
# Запретить RDP со всех остальных IP:
New-NetFirewallRule -DisplayName "Block RDP other" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 54321 `
-Action Block
Включи NLA
Network Level Authentication требует аутентификацию до установки полной сессии — это снижает нагрузку при атаках перебора и убирает целый класс уязвимостей.
# Проверить статус NLA:
(Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp').UserAuthentication
# 1 = NLA включён, 0 = выключен
# Включить NLA:
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 1
Настрой блокировку после неудачных попыток входа
# Через secpol.msc:
# Политики учётных записей -> Политика блокировки учётной записи
# Порог блокировки: 5 попыток
# Продолжительность блокировки: 15 минут
# Сброс счётчика: 15 минут
# Или через PowerShell:
net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15
Мониторинг попыток подключения
# Последние успешные RDP-подключения (Event ID 4624):
Get-EventLog -LogName Security -InstanceId 4624 -Newest 20 | Where-Object {$_.Message -like "*Logon Type:*10*"} | Format-List TimeGenerated, Message
# Неудачные попытки входа (Event ID 4625):
Get-EventLog -LogName Security -InstanceId 4625 -Newest 50 | Format-List TimeGenerated, Message
# Подключения к удалённому рабочему столу (Event ID 1149):
Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" -MaxEvents 20 | Format-List TimeCreated, Message
VPN вместо открытого порта
Если есть возможность — не открывай RDP напрямую в интернет вообще. Подними VPN (WireGuard, OpenVPN), подключайся через него, и только потом открывай RDP. Так порт 3389 (или любой другой) не торчит наружу совсем.
Регулярный бэкап конфигурации
# Экспорт реестровых ключей RDP в файл (делай перед изменениями):
reg export "HKLM\System\CurrentControlSet\Control\Terminal Server" C:\backup\rdp_settings.reg
reg export "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" C:\backup\rdp_port.reg
Прогноз: что теперь работает
Ты включил RDP на Windows 10/11, добавил пользователей, сменил порт, открыл нужные правила в брандмауэре. Подключение работает с Windows через mstsc, с Linux через FreeRDP или Remmina, с macOS через Microsoft Remote Desktop. Если нужен был сервер на Ubuntu — xrdp запущен и принимает подключения. Если была Windows Home — RDP Wrapper решил проблему. Проброс через роутер настроен, снаружи тоже заходит.
Если что-то пошло не так — пиши в комментарии, разберёмся. Ошибка CredSSP, чёрный экран, зависшие сессии — всё бывало, всё лечится.
Оставайтесь на связи
Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.
Подписаться на IT-Аптеку →


