Как стать автором
Обновить
2647.44
RUVDS.com
VDS/VPS-хостинг. Скидка 15% по коду HABR15

Будни техпода. Ошибки при подключении по RDP

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров35K


Для доступа удалённому 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.


По умолчанию RDP использует на удалённой машине порт 3389. Для того, чтобы успешно установить соединение, этот порт должен быть открыт и доступен через брандмауэры и конфигурацию сетевой безопасности. При этом следует отметить, что номер порта может быть изменён администратором для приведения настроек конфигурации RDP в соответствие со своими конкретными потребностями.

▍ Недостаточность прав пользователя


Для многих очевидно, что пользователь, под именем которого производится подключение к удалённому рабочему столу, должен обладать определёнными полномочиями. В самом простейшем случае локальная учётная запись должна входить либо в группу Administrators, либо, если данной учётке не нужны администраторские привилегии, в группу Remote Desktop Users. Если же пользователь не обладает достаточными правами, ошибка при подключении выглядит следующим образом:


Решением в данном случае является добавление учётной записи дополнительных полномочий путём помещения её в соответствующую группу, либо потребуется настройка групповых политик, если вы используете Active Directory.

▍ Проверка порта RDP


Именно с возможным изменением номера порта связан первый из рассматриваемых рецептов восстановления неработающего подключения к удалённому рабочему столу. Если номер порта на удалённом сервере не совпадает с номером порта на локальной машине, клиент mstsc выдаёт ошибку, как на скриншоте ниже.


Чтобы проверить и при несоответствии изменить номер порта на удалённом сервере, придётся подключиться к нему либо при помощи консоли, либо с использованием какого-либо другого протокола — здесь вам в помощь VNC, Radmin или что-либо подобное. На серверах RUVDS для подобных ситуаций предусмотрен специальный аварийный режим работы, который по сути является аналогом консольного подключения. Для того, чтобы получить возможность управлять виртуальной машиной в данном режиме, достаточно кликнуть на изображение его экрана в списке серверов.



Получив доступ к удалённой машине, необходимо запустить редактор реестра. Для этого в строке поиска набираем regedit. В результате чего система найдёт соответствующее приложение.



Хорошим тоном в таких ситуациях является создание резервной копии на случай, если внесённые изменения приведут к каким-либо неожиданным последствиям. Системный реестр — серьёзная вещь, поэтому подобный подход здесь особенно важен. Чтобы создать бэкап в редакторе реестра, переходим в File, затем Export. После чего указываем место на диске, куда нужно сохранить файл резервной копии, в разделе Export range отмечаем сохранение всего реестра целиком и нажимаем Save.



Если что-то пойдёт не так, восстановить реестр из копии можно будет также в редакторе через FileImport.
Теперь к главному. В редакторе реестра через EditFind запускаем поиск ветки rdp-tcp.



В ветке RDP-Tcp ищем параметр PortNumber, открываем его, указываем отображение в десятичном формате и, если значением параметра является не 3389, меняем его и нажимаем ОК.



Теперь для применения внесённых изменений необходимо перезапустить службы удалённых рабочих столов. Чтобы это сделать, в строке поиска вводим services и выбираем приложение, в котором перечислены службы, работающие в фоновом режиме.



Здесь находим службу Remote Desktop Services и кликаем на Restart.



Кроме того, следует иметь в виду, что порт, предназначенный для подключения по RDP, должен быть открыт в брандмауэре удалённого сервера. Правила, применяемые для RDP, называются Remote Desktop — User Mode. Проверяем их тоже на всякий случай.



Если попытки подключиться по RDP всё ещё заканчиваются ничем, следует в числе прочего проверить статус протокола. Для этого также необходимо войти в удалённую систему через консоль или протокол, отличный от RDP, после чего запустить редактор реестра. Здесь проверяем параметр fDenyTSConnections, который находится в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server. Значением параметра может быть 0 или 1. Первое значение означает, что протокол работает, второе указывает на то, что он отключён. Естественно, устанавливаем значение параметра в 0 и снова пытаемся подключиться к серверу по RDP.



Для проверки статуса протокола удалённого рабочего стола можно использовать командную оболочку PowerShell. В поисковой строке набираем powershell и запускаем найденное приложение от имени администратора.



В командной строке выполняем команду Get-Service TermService и смотрим, что вывод показывает в колонке Status.


Здесь же проверяем, слушается ли порт 3389 на стороне сервера. Оптимально, если порт присутствует в списке и в столбце Status имеет значение Listen. Проверку состояния порта производим командой:

Get-NetTCPConnection -State Listen | Where-Object LocalPort -EQ 3389



Помимо этого, PowerShell позволяет проверить наличие в брандмауэре правила, разрешающего входящие RDP-подключения. Команда для такой проверки выглядит следующим образом:

Get-NetFirewallPortFilter | Where-Object LocalPort -EQ 3389 | Get-NetFirewallRule

О том, что доступ к порту разрешён, свидетельствует значение True в поле Enabled и значение Allow в поле Action.



Проверить состояние порта RDP можно также и из монитора ресурсов, для запуска которого после нажатия Win R вводим resmon.exe, либо в Control Panel переходим Administrative ToolsResource Monitor. Активность на порту доступна для мониторинга в разделе TCP Connections вкладки Network.



▍ Проверка настроек файрвола в личном кабинете


В личном кабинете RUVDS присутствует штатный межсетевой экран, при помощи которого можно легко настроить параметры доступа к виртуальным серверам. Основой конфигурации данного файрвола является набор разрешающих и запрещающих правил, создаваемых владельцем виртуалок. Для доступа к настройкам межсетевого экрана переходим в личный кабинет и в настройках сервера переключаемся на вкладку Сеть, где кликаем на Настроить файрвол для публичных адресов. Чтобы получить доступ к изменению конфигурации межсетевого экрана, необходимо корректно набрать пароль от личного кабинета.



В открывшемся окне обратите внимание на список правил файрвола. Здесь нас в первую очередь должны интересовать правила, касающиеся рассматриваемого протокола. Если ранее вы уже прописывали правила, позволяющие или запрещающие подключаться к порту RDP из какой-то определённой сети или с какого-либо IP-адреса, то, вероятно, невозможность подключения к виртуальной машине заключена именно в этом. Убедитесь, что IP-адрес, с которого вы пытаетесь соединиться с вашим VPS, является валидным с точки зрения текущего набора правил.



Желание обезопасить сервер путём ограничения доступа к нему не лишено здравого смысла, но всё же требует определённой степени аккуратности. Здесь важно не заблокировать доступ самому себе.

▍ Проверка локальной рабочей станции


Корнем проблем, препятствующих бесперебойному подключению по RDP, может служить компьютер, с которого такое подключение производится. В некоторых случаях помогает очистка истории RDP-подключений. Сделать это можно в редакторе реестра на локальной машине. А именно, открываем редактор, для чего используем комбинацию клавиш Win и R, где вводим regedit.exe и переходим на ветку HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client. Там разворачиваем ветку Default и выделяем все параметры с именами MRU0-MRU9, потом нажимаем правую кнопку мыши и кликаем на Удалить.



Там же можно очистить всю историю RDP-подключений вместе с сохранёнными адресами и именами пользователей. Для этого необходимо удалить содержимое ветки Servers. Поскольку выделять все вложенные ветки внутри Servers не совсем сподручно, удобнее будет удалить данную ветку целиком и после этого создать новую с таким же названием.


После таких манипуляций с реестром перезагружаем локальный компьютер и пробуем подключиться к удалённой машине.

В некоторых случаях может помочь изменение настроек подключения в клиенте mstsc. Для этого запускаем его, нажимаем стрелочку Показать параметры и переходим во вкладку Взаимодействие. Здесь устанавливаем или убираем галочку в строке Восстановить подключение при разрыве (действие зависит от того, в каком состоянии находится данный чекбокс).


Затем снова пробуем при помощи кнопки Подключить.

▍ Заключение


При любых сложностях в подключении к удалённой машине следует помнить, что доступ к виртуальному серверу RUVDS возможен через аварийный режим. Данный режим хотя и имеет ограничения по времени использования, всё же позволяет решить проблему на стороне удалённого сервера. В то же время, как мы уже смогли убедиться, причина невозможности подключения может заключаться в рабочей станции, с которой производится подключение.
Не всегда неудачная попытка подключения по RDP заканчивается выводом какой-либо ошибки. Для пользователя, который подключается к удалённой системе, это может выглядеть как «бесконечный коннект». В такой ситуации полезно убедиться, что на виртуальном сервере установлено достаточное количество оперативной памяти, которое позволяет службе RDP работать в штатном режиме. К примеру, на удалённой системе может быть запущено чрезмерное количество торговых ботов, и под такой нагрузкой у сервера нет возможности поддерживать полноценную работу RDP.

Также никто не отменял самый популярный метод решения всех неурядиц — перезагрузку машины. Не исключено, что сервер банально «завис». Перезапустить его можно в личном кабинете при помощи соответствующей кнопки под изображением экрана виртуалки.


Если решить проблему всё же не удаётся, всегда можно инициировать переустановку операционной системы на виртуальном сервере, если на нём нет важной информации или такие данные предварительно сохранены. Ну, и естественно, можно обратиться к специалистам технической поддержки.

Скидки, итоги розыгрышей и новости о спутнике RUVDS — в нашем Telegram-канале ?
Теги:
Хабы:
Всего голосов 30: ↑26 и ↓4+33
Комментарии51

Публикации

Информация

Сайт
ruvds.com
Дата регистрации
Дата основания
Численность
11–30 человек
Местоположение
Россия
Представитель
ruvds