![](https://habrastorage.org/webt/n7/mn/6z/n7mn6zjjajhlmyomz-1oiixbxns.jpeg)
Для доступа удалённому Windows-серверу из Windows-системы большинство администраторов используют протокол удалённого рабочего стола (Remote Desktop Protocol — RDP). Есть, конечно, и существенная доля тех, кто оперирует более обширным перечнем вариантов подключения — Microsoft Remote Assistance, VNC, Radmin и много чего ещё, но мы поговорим про RDP. Вернее, не о самом RDP, а о проблемах, которые могут возникнуть при подключении к удалённому серверу при помощи этого протокола.
Для многих, вероятно, не составляет труда решить внезапно возникшее затруднение, когда почему-то не получается подключиться к виртуалке, вдобавок практически каждый, не сходя с места, подкинет пару-тройку советов, где и что следует глянуть, чтобы исправить проблему. И всё же, вдруг кто-то чего-то не знает. На этот случай под катом несколько способов выхода из ситуации — по большей части самых простых.
▍ Немного теории
RDP — сетевой протокол разработки корпорации Microsoft, позволяющий управлять удалённым компьютером или виртуальной машиной. Протокол был разработан для поддержки множества различных типов сетевых топологий, таких как ISDN, POTS, IPX, NetBIOS, TCP/IP. Текущая версия работает только по протоколу TCP/IP. Передача данных через стек RDP производится в рамках семиуровневых стандартов модели OSI. Данные из службы или приложения передаются вниз по стекам протоколов, где они разбиваются на секции, направляются в канал, шифруются, оформляются, упаковываются в сетевой протокол и, наконец, отправляются в адрес клиента. Возвращаемые данные обрабатываются так же, только в обратном порядке. Пакет лишается своего адреса, после чего разворачивается, расшифровывается и передаётся приложению.
Протокол использует архитектуру клиент-сервер, когда клиент инициирует подключение, а сервер отвечает на полученный запрос. Чтобы начать сеанс RDP, клиент посылает на удалённый узел запрос на подключение, включающий в себя данные, необходимые для входа в систему — учётную запись пользователя, разрешение и глубину цветопередачи экрана удалённого рабочего стола, параметры использования клавиатуры, звука и тому подобное. После чего сервер проверяет корректность учётных данных подключающегося пользователя и устанавливает соединение с клиентом.
В установленном соединении RDP использует сочетание методов сжатия, кэширования и кодирования для оптимизации передачи обновлений экрана, ввода с помощью мыши и клавиатуры и других данных.
Для подключения к удалённому рабочему столу из Windows-системы используется специальный клиент, запуск которого осуществляется при помощи комбинации клавиш
Win
и R
, где необходимо ввести mstsc
.![](https://habrastorage.org/webt/tv/jv/gf/tvjvgfhoiifprmcwhuaoo0sf6ya.png)
По умолчанию RDP использует на удалённой машине порт 3389. Для того, чтобы успешно установить соединение, этот порт должен быть открыт и доступен через брандмауэры и конфигурацию сетевой безопасности. При этом следует отметить, что номер порта может быть изменён администратором для приведения настроек конфигурации RDP в соответствие со своими конкретными потребностями.
▍ Недостаточность прав пользователя
Для многих очевидно, что пользователь, под именем которого производится подключение к удалённому рабочему столу, должен обладать определёнными полномочиями. В самом простейшем случае локальная учётная запись должна входить либо в группу
Administrators
, либо, если данной учётке не нужны администраторские привилегии, в группу Remote Desktop Users
. Если же пользователь не обладает достаточными правами, ошибка при подключении выглядит следующим образом:![](https://habrastorage.org/webt/-s/pq/ge/-spqgealeguoqncy_hs2dm8wy-0.png)
Решением в данном случае является добавление учётной записи дополнительных полномочий путём помещения её в соответствующую группу, либо потребуется настройка групповых политик, если вы используете Active Directory.
▍ Проверка порта RDP
Именно с возможным изменением номера порта связан первый из рассматриваемых рецептов восстановления неработающего подключения к удалённому рабочему столу. Если номер порта на удалённом сервере не совпадает с номером порта на локальной машине, клиент
mstsc
выдаёт ошибку, как на скриншоте ниже.![](https://habrastorage.org/webt/gj/oj/cr/gjojcr4oxi943adw-zkutos2ad0.png)
Чтобы проверить и при несоответствии изменить номер порта на удалённом сервере, придётся подключиться к нему либо при помощи консоли, либо с использованием какого-либо другого протокола — здесь вам в помощь VNC, Radmin или что-либо подобное. На серверах RUVDS для подобных ситуаций предусмотрен специальный аварийный режим работы, который по сути является аналогом консольного подключения. Для того, чтобы получить возможность управлять виртуальной машиной в данном режиме, достаточно кликнуть на изображение его экрана в списке серверов.
![](https://habrastorage.org/webt/nl/l3/ox/nll3oxpaiptobrtr7kzur1xmdyi.png)
Получив доступ к удалённой машине, необходимо запустить редактор реестра. Для этого в строке поиска набираем
regedit
. В результате чего система найдёт соответствующее приложение.![](https://habrastorage.org/webt/de/k1/af/dek1afbtw8dt6ww2yreahlspxhk.png)
Хорошим тоном в таких ситуациях является создание резервной копии на случай, если внесённые изменения приведут к каким-либо неожиданным последствиям. Системный реестр — серьёзная вещь, поэтому подобный подход здесь особенно важен. Чтобы создать бэкап в редакторе реестра, переходим в
File
, затем Export
. После чего указываем место на диске, куда нужно сохранить файл резервной копии, в разделе Export range
отмечаем сохранение всего реестра целиком и нажимаем Save
.![](https://habrastorage.org/webt/bs/m1/te/bsm1tehaqulycd2maa0o1s0kyry.png)
Если что-то пойдёт не так, восстановить реестр из копии можно будет также в редакторе через
File
→ Import
.Теперь к главному. В редакторе реестра через
Edit
→ Find
запускаем поиск ветки rdp-tcp
.![](https://habrastorage.org/webt/f-/fa/u8/f-fau8ufw_5u4cvbipodqewmgnw.png)
В ветке
RDP-Tcp
ищем параметр PortNumber
, открываем его, указываем отображение в десятичном формате и, если значением параметра является не 3389, меняем его и нажимаем ОК
.![](https://habrastorage.org/webt/y8/5q/hz/y85qhzhk0mylhi5o10fijsn3ixm.png)
Теперь для применения внесённых изменений необходимо перезапустить службы удалённых рабочих столов. Чтобы это сделать, в строке поиска вводим
services
и выбираем приложение, в котором перечислены службы, работающие в фоновом режиме.![](https://habrastorage.org/webt/2d/cr/uw/2dcruwmnvkgade2hr7qlyklqxz4.png)
Здесь находим службу
Remote Desktop Services
и кликаем на Restart
.![](https://habrastorage.org/webt/yx/yz/rg/yxyzrgizqbykr0iioed1gfs2smu.png)
Кроме того, следует иметь в виду, что порт, предназначенный для подключения по RDP, должен быть открыт в брандмауэре удалённого сервера. Правила, применяемые для RDP, называются
Remote Desktop — User Mode
. Проверяем их тоже на всякий случай.![](https://habrastorage.org/webt/ew/_f/c0/ew_fc0jyxrskjbcg68m_iszlwm4.png)
Если попытки подключиться по RDP всё ещё заканчиваются ничем, следует в числе прочего проверить статус протокола. Для этого также необходимо войти в удалённую систему через консоль или протокол, отличный от RDP, после чего запустить редактор реестра. Здесь проверяем параметр
fDenyTSConnections
, который находится в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
. Значением параметра может быть 0
или 1
. Первое значение означает, что протокол работает, второе указывает на то, что он отключён. Естественно, устанавливаем значение параметра в 0
и снова пытаемся подключиться к серверу по RDP.![](https://habrastorage.org/webt/og/za/qu/ogzaqufzj48ayuowvpbliwfr1a8.png)
Для проверки статуса протокола удалённого рабочего стола можно использовать командную оболочку PowerShell. В поисковой строке набираем
powershell
и запускаем найденное приложение от имени администратора.![](https://habrastorage.org/webt/mn/lc/qz/mnlcqzxnoim8avufji2ci9zvkk8.png)
В командной строке выполняем команду
Get-Service TermService
и смотрим, что вывод показывает в колонке Status
.![](https://habrastorage.org/webt/6m/wq/zx/6mwqzx919fly-a8kuq7ge8uyuqe.png)
Здесь же проверяем, слушается ли порт 3389 на стороне сервера. Оптимально, если порт присутствует в списке и в столбце
Status
имеет значение Listen
. Проверку состояния порта производим командой:Get-NetTCPConnection -State Listen | Where-Object LocalPort -EQ 3389
![](https://habrastorage.org/webt/t2/_7/pm/t2_7pmnlxorz2rvgxj8tlekn7he.png)
Помимо этого, PowerShell позволяет проверить наличие в брандмауэре правила, разрешающего входящие RDP-подключения. Команда для такой проверки выглядит следующим образом:
Get-NetFirewallPortFilter | Where-Object LocalPort -EQ 3389 | Get-NetFirewallRule
О том, что доступ к порту разрешён, свидетельствует значение
True
в поле Enabled
и значение Allow
в поле Action
.![](https://habrastorage.org/webt/5l/nn/58/5lnn58ghzb6accsmufvlrtnqe38.png)
Проверить состояние порта RDP можно также и из монитора ресурсов, для запуска которого после нажатия
Win
R
вводим resmon.exe
, либо в Control Panel
переходим Administrative Tools
→ Resource Monitor
. Активность на порту доступна для мониторинга в разделе TCP Connections
вкладки Network
.![](https://habrastorage.org/webt/bo/v6/6l/bov66lvdevvtm-ahk9zcebjwn74.png)
▍ Проверка настроек файрвола в личном кабинете
В личном кабинете RUVDS присутствует штатный межсетевой экран, при помощи которого можно легко настроить параметры доступа к виртуальным серверам. Основой конфигурации данного файрвола является набор разрешающих и запрещающих правил, создаваемых владельцем виртуалок. Для доступа к настройкам межсетевого экрана переходим в личный кабинет и в настройках сервера переключаемся на вкладку
Сеть
, где кликаем на Настроить файрвол для публичных адресов
. Чтобы получить доступ к изменению конфигурации межсетевого экрана, необходимо корректно набрать пароль от личного кабинета.![](https://habrastorage.org/webt/m3/zi/yj/m3ziyjigegrnx-cyhiasbc2dkh4.png)
В открывшемся окне обратите внимание на список правил файрвола. Здесь нас в первую очередь должны интересовать правила, касающиеся рассматриваемого протокола. Если ранее вы уже прописывали правила, позволяющие или запрещающие подключаться к порту RDP из какой-то определённой сети или с какого-либо IP-адреса, то, вероятно, невозможность подключения к виртуальной машине заключена именно в этом. Убедитесь, что IP-адрес, с которого вы пытаетесь соединиться с вашим VPS, является валидным с точки зрения текущего набора правил.
![](https://habrastorage.org/webt/id/mv/xc/idmvxca6hhggmx-xvg5cdpvj6da.png)
Желание обезопасить сервер путём ограничения доступа к нему не лишено здравого смысла, но всё же требует определённой степени аккуратности. Здесь важно не заблокировать доступ самому себе.
▍ Проверка локальной рабочей станции
Корнем проблем, препятствующих бесперебойному подключению по RDP, может служить компьютер, с которого такое подключение производится. В некоторых случаях помогает очистка истории RDP-подключений. Сделать это можно в редакторе реестра на локальной машине. А именно, открываем редактор, для чего используем комбинацию клавиш
Win
и R
, где вводим regedit.exe
и переходим на ветку HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client
. Там разворачиваем ветку Default
и выделяем все параметры с именами MRU0-MRU9
, потом нажимаем правую кнопку мыши и кликаем на Удалить
.![](https://habrastorage.org/webt/b8/y4/jy/b8y4jyl_ihxmdudfmuuedya8sna.png)
Там же можно очистить всю историю RDP-подключений вместе с сохранёнными адресами и именами пользователей. Для этого необходимо удалить содержимое ветки
Servers
. Поскольку выделять все вложенные ветки внутри Servers
не совсем сподручно, удобнее будет удалить данную ветку целиком и после этого создать новую с таким же названием.![](https://habrastorage.org/webt/ua/fr/11/uafr11kblgxdscaxi6amjlm4ee4.png)
После таких манипуляций с реестром перезагружаем локальный компьютер и пробуем подключиться к удалённой машине.
В некоторых случаях может помочь изменение настроек подключения в клиенте
mstsc
. Для этого запускаем его, нажимаем стрелочку Показать параметры
и переходим во вкладку Взаимодействие
. Здесь устанавливаем или убираем галочку в строке Восстановить подключение при разрыве
(действие зависит от того, в каком состоянии находится данный чекбокс).![](https://habrastorage.org/webt/mi/ww/cn/miwwcn4gg6mwhkssqisg_nk7kso.png)
Затем снова пробуем при помощи кнопки
Подключить
.▍ Заключение
При любых сложностях в подключении к удалённой машине следует помнить, что доступ к виртуальному серверу RUVDS возможен через аварийный режим. Данный режим хотя и имеет ограничения по времени использования, всё же позволяет решить проблему на стороне удалённого сервера. В то же время, как мы уже смогли убедиться, причина невозможности подключения может заключаться в рабочей станции, с которой производится подключение.
Не всегда неудачная попытка подключения по RDP заканчивается выводом какой-либо ошибки. Для пользователя, который подключается к удалённой системе, это может выглядеть как «бесконечный коннект». В такой ситуации полезно убедиться, что на виртуальном сервере установлено достаточное количество оперативной памяти, которое позволяет службе RDP работать в штатном режиме. К примеру, на удалённой системе может быть запущено чрезмерное количество торговых ботов, и под такой нагрузкой у сервера нет возможности поддерживать полноценную работу RDP.
Также никто не отменял самый популярный метод решения всех неурядиц — перезагрузку машины. Не исключено, что сервер банально «завис». Перезапустить его можно в личном кабинете при помощи соответствующей кнопки под изображением экрана виртуалки.
![](https://habrastorage.org/webt/ez/gp/63/ezgp63c_c1fcljy6stkvea33lqw.png)
Если решить проблему всё же не удаётся, всегда можно инициировать переустановку операционной системы на виртуальном сервере, если на нём нет важной информации или такие данные предварительно сохранены. Ну, и естественно, можно обратиться к специалистам технической поддержки.
Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале ?
![](https://habrastorage.org/webt/4g/dr/oa/4gdroaajo7o0zzvwwx5__rlzhwi.png)