Любому системному администратору, скорее всего, приходилось сталкиваться с проблемой подключения к системе через протокол удаленного рабочего стола (RDP). Сообщения об ошибках, такие как «Удаленный рабочий стол отключен» и «Клиенту не удалось установить подключение к удаленному компьютеру» — частый повод для обращений в службу технической поддержки Microsoft. К сожалению, подобные сообщения не всегда указывают на основную причину проблемы. .

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

Неверное понимание

Распространенное заблуждение, касающееся RDP, — необходимость установки сервера лицензирования Remote Desktop Licensing Server (ранее Terminal Services Licensing) или Remote Desktop Session Host (ранее Terminal Server) для обеспечения возможности удаленного подключения. В стандартной конфигурации удаленный рабочий стол поддерживает два одновременных подключения для удаленного администрирования компьютера. Для установления этих соединений сервер лицензирования не требуется.

Лицензирование удаленных рабочих столов Remote Desktop Licensing (RD Licensing), ранее Terminal Services Licensing (TS Licensing) — это ролевая служба для сервера служб удаленных рабочих столов, включенная в Windows Server 2008 R2. RD Licensing управляет лицензиями клиентского доступа служб удаленных рабочих столов RDS CAL, необходимыми каждому устройству или пользователю для подключения к серверу узла сеансов удаленных рабочих столов Remote Desktop Session Host (RD Session Host). Для установки, выпуска и контроля лицензий RDS CAL используется диспетчер лицензирования удаленных рабочих столов Remote Desktop Licensing Manager (RD Licensing Manager) на сервере лицензирования.

Предположим, что в вашей ИТ-группе трудится три администратора. Вы разрабатываете принципиально новую систему Windows Server для выполнения функций сервера приложений. В начальной настройке участвуют два администратора, удаленно подключенных к серверу (без установленных лицензий). Когда рабочий день одного из администраторов заканчивается, его сменяет третий администратор, который при попытке удаленного подключения к этому же компьютеру видит, что уже установлены два соединения, одно из которых он при необходимости может принудительно разорвать.

Вспомним также, что удаленные подключения только для административных целей не требуют установки Remote Desktop Session Host (или Terminal Server). Вместо этого необходимо включить параметр разрешения удаленного доступа в окне свойств системы.

Другое распространенное заблуждение касается разрешений, позволяющих пользователю войти в сеанс удаленного компьютера. Членам группы Administrators не требуются специальные разрешения для удаленного подключения, даже если они не указаны в группе Remote Desktop Users. Группа пользователей Remote Desktop Users на сервере RD Session Host используется для предоставления пользователям/группам разрешения на удаленное подключение к серверу RD Session Host.

Добавить учетные записи пользователей и группы в группу Remote Desktop Users можно с помощью оснастки Local Users and Groups в Microsoft Management Console (MMC), либо оснастки Active Directory Users and Computers (если сервер RD Session Host установлен на контроллере домена), либо на вкладке Remote в окне свойств системы на сервере RD Session Host (экран 2). Добавление пользователя в группу Remote Desktop Users с помощью одного из этих методов обеспечит соответствующие разрешения удаленного доступа к компьютеру. В противном случае выдается отказ в подключении.

Разрешения и права пользователей

Как добавление пользователя в группу Remote Desktop Users дает ему соответствующие права на удаленное подключение к компьютеру? Права пользователя, как следует из названия, управляют допуском и способом регистрации на компьютере. В данном случае удаленный доступ к серверу регулируется правом «Разрешить регистрацию в системе через службу удаленных рабочих столов».

Если вы откроете локальную политику безопасности на сервере Start\Run\secpol.msc, то увидите, что пользователям удаленного рабочего стола право «Разрешить регистрацию в системе через службу удаленных рабочих столов» дано по умолчанию. Добавление пользователей в группу Remote Desktop Users также предоставляет им это право.

Устанавливать ролевую службу RD Session Host на контроллере домена AD не рекомендуется. Разрешение пользователям запускать программы на DC может создать угрозу безопасности и проблемы с производительностью. При установке ролевой службы RD Session Host на DC потребуется внести изменения в настройки параметров безопасности DC, чтобы открыть пользователям удаленный доступ к серверу. Удаленный доступ регулируется правом «Разрешить вход в систему через службу удаленных рабочих столов», которое можно задать с использованием консоли управления групповыми политиками (GPMC).

По умолчанию на DC право «Разрешить вход в систему через службу удаленных рабочих столов» предоставлено только группе «Администраторы». Чтобы разрешить удаленный доступ к серверу RD Session Host пользователям, не входящим в группу администраторов, необходимо предоставить право «Разрешить регистрацию в системе через службу удаленных рабочих столов» и группе Remote Desktop Users.

Получив очередное сообщение об ошибке, показанное на экране 1, проверьте настройки групповой политики на удаленном компьютере. Настоятельно не рекомендуется наделять пользователя правом в явной форме. Вместо этого добавьте его в группу Remote Desktop Users и убедитесь в наличии у этой группы нужного права.

 

Экран 1. Сообщение о том, что пользователь не принадлежит к  группе Remote Desktop Users

Назначение порта

Другой распространенный сценарий — блокировка порта и/или конфликт назначения порта. Для диагностики этой проблемы необходимо проверить, открыт ли порт RDP по умолчанию (3389), и убедиться в том, что он используется правильной службой, в данном случае — TermService.

С помощью команд Netstat и Tasklist выполните быструю проверку на сервере, к которому устанавливается удаленное подключение:

C:\Users\Administrator.
   CONTOSOONE>netstat -a -o
Active Connections
   Proto Local Address
   Foreign Address State PID
TCP :3389
   :0 LISTENING 2252

По результатам проверки сервер ожидает сигнала на порту 3389. Если порт 3389 не указан, то сервер на этом порту сигнала не ожидает (возможно, брандмауэр или другой механизм проверки ACL на хост-компьютере препятствует использованию данного порта).

Однако убедиться в том, что порт открыт, — лишь половина дела. Необходимо проверить, используется ли он соответствующей службой. Для этого берем код процесса (PID) из результатов предыдущей проверки и выполняем команду Tasklist для поиска строки PID 2252.

C:\Users\Administrator.
CONTOSOONE>tasklist/svc | findstr
"2252"
Image Name      PID      Services
svchost.exe        2252   TermService

Результаты указывают на то, что порт используется правильной службой (в данном случае — Termservice). Если правильная служба не указана, то можно заключить, что порт 3389 открыт (то есть сервер ожидает сигнала на порту 3389), но используется другим приложением.

Могут существовать веские основания для переназначения порта RDP по умолчанию другому приложению, но тогда необходимо определить порт, назначенный для RDP. Заметим, что Microsoft не рекомендует изменять порт, назначенный для RDP.

Неверно заданные параметры

Еще один распространенный сценарий — ограничение числа пользователей, которые могут одновременно подключаться к удаленному рабочему столу или сеансу служб Remote Desktop Services. Этот сценарий может проявиться как сообщение об «ошибке соединения», и после некоторого исследования выясняется, что x пользователей получают удаленный доступ, а пользователь (x + 1) в ответ на попытку подключения получает сообщение, показанное на экране 2. Заметим, что подобная проблема может также возникать у администраторов, пытающихся установить соединение с компьютером в режиме Remote Administration.

 

Экран 2. Достижение предела одновременных подключений

Максимальное число сеансов служб Remote Desktop Services на сервере определяют два параметра.

  • Установка Limit Number of Connections — параметр групповой политики, позволяющий ограничить число активных сеансов удаленного доступа на сервере. По достижении заданного максимума пользователи в ответ на попытку установления соединения получают сообщение об ошибке с предложением повторить попытку позже.
  • Параметры сетевого адаптера — при установке ролевой службы RD Session Host на компьютере соединение RDP-TCP изменяется, разрешая неограниченное число одновременных удаленных подключений. Заметим, что если параметр «Максимальное число подключений» выбран и недоступен, то это означает, что установка групповой политики «Ограничить число подключений» уже включена и применена к серверу RD Session Host.

Оба описанных параметра позволяют задать максимальное число одновременных удаленных подключений. Ограничение этого числа может повысить производительность, поскольку меньшее число сеансов потребляет меньше системных ресурсов. Администраторы часто включают какой-либо из этих параметров для повышения производительности, но забывают об этом, столкнувшись с проблемой малого числа пользователей, способных установить соединение.

Сабин Наир (sabinn@microsoft.com) — старший менеджер в группе Product Quality (PQ) в Microsoft, специализирующийся на проблемах в Windows Server