- Ошибка RDP: Не удается завершить требуемую операцию, службы удаленных рабочих столов заняты
- #1 — Проверьте ресурсы RDS сервера
- #2 – Сброс сессии пользователя и завершение зависших процессов в RDS сессии
- #3 — Сброс сессии пользователя через командную строку
- #4 – Проверьте настройки лицензирования хоста RDS
- #5 – Уберите лимит RDP подключений в GPO
- #6 — Нестандартные решения: если ничего не помогает
- Скатерть-самобранка, или как развернуть службы удаленного рабочего стола на Windows Server 2012 R2
- RD Connection Broker
- Централизованная публикация приложений
- Опции развертывания: быстрая и стандартная
- Консоли управления
- Установка служб удаленного рабочего стола на Windows Server 2012 R2
- Лицензирование
- Развертывание служб удаленного рабочего стола
Ошибка RDP: Не удается завершить требуемую операцию, службы удаленных рабочих столов заняты
Периодически некоторые пользователи не могут залогиниться на сервера RDS фермы Windows Server через стандартный rdp клиент с ошибкой:
Также несколько раз встречали такую картину: на вкладке Users диспетчера задач RDS хоста имеется множество зависших сессией пользователей с именами (4) вместо username и со статусом Disconnected.
Проблема встречается на всех версиях Windows Server: 2008 R2, 2012 R2, 2016 и 2019.
Ошибка может возникать по разным причинам:
- Ошибка в работе службы удаленных рабочих столов;
- Баг с процессом csrss.exe;
- Проблема с профилем пользователя или со службой profsvc;
- Нехватка оперативной памяти или дискового пространства на RDSH сервере;
- Некорректные настройки групповых политик.
К сожалению, на данный момент нет официального решения от Microsoft, которое бы полностью решало проблему, всё сводится к устранению симптомов.
Практически всегда проблема решается сбросом сессии проблемного пользователя и перезагрузкой RDS сервера, но в исключительных ситуациях этого может не хватить. Пройдемся по решениям, начиная от самых легких.
#1 — Проверьте ресурсы RDS сервера
Убедитесь, что серверу хватает ресурсов, так как эта ошибка может возникать из-за нехватки оперативной памяти или дискового пространства. Проверьте загруженность оперативной памяти и достаточно ли свободного места на диске, где установлена операционная система (должно быть свободно хотя бы 1 GB). Также проверьте event log на предмет критических ошибок, связанных с RDS.
Если ресурсов хватает, переходим к следующему варианту.
#2 – Сброс сессии пользователя и завершение зависших процессов в RDS сессии
Сначала попробуем найти и принудительно сбросить сессию пользователя, который не может зайти на RDS сервер. В диспетчере задач, на вкладке Users найдите нужного пользователя и через контекстное меню кликаем “Log off”. В большинстве случаев, этого достаточно, но иногда в диспетчере задач вы можете обнаружить множество зависших сессий с именем “(4)” вместо имени пользователя. Как правило в зависшей сессии будет присутствовать 4 процесса:
- Client Server Runtime Process (csrss.exe)
- Desktop Windows Manager (dwm.exe)
- Windows Logon Application (winlogon.exe)
- Windows Logon User Interface
В первую очередь попробуйте завершить все зависшие сессии с (4) через диспетчер задач, как описано выше. Если это не поможет, то лучше всего перезагрузить сервер, но зачастую такой возможности нет, поэтому пробуем решить проблему без перезагрузки:
- Запустите командную строку с правами администратора и введите: query session
Она покажет всех пользователей и их сессии на терминальном сервере. В выводе команды есть 3 интересующих нас столбца: SESSIONNAME, USERNAME и ID. Найдите пользователя (4) и соответствующий ему ID, в данном примере ID 2. Нам нужно завершить процесс csrss.exe который работает под этой сессией, сначала найдем его.
- В командной строке введите: query process /id 2
Команда выведет все процессы, которые запущены в этой сессии. Нам нужно найти процесс csrss.exe и соответствующий ему PID. В моём случае PID будет 5140. Нам нужно завершить этот процесс.
- Сверимся по диспетчеру задач. Откройте диспетчер задач, перейдите на вкладку Details и найдите нужный вам PID и процесс.
Если нужный вам PID соответствует процессу csrss.exe, то завершите процесс через контекстное меню и End task, либо через командную строку: taskkill /F /PID 5140
Это нужно проделать с каждым пользователем “(4)”, если их несколько.
#3 — Сброс сессии пользователя через командную строку
Если разлогинить “проблемного” пользователя через диспетчер задач не удалось, можно попробовать сбросить сессию пользователя через командную строку.
-
- Запустите командную строку с правами администратора и введите query session
Скопируйте SESSIONNAME проблемного пользователя.
- Введите reset session . Вместо впишите нужное вам название сессии, как показано на скриншоте
- Запустите командную строку с правами администратора и введите query session
Это нужно сделать с каждым проблемным пользователем. Теперь можете попробовать залогиниться, проблема должна решиться. Если у вас есть возможность перезагрузить сервер, то лучше сделать это.
#4 – Проверьте настройки лицензирования хоста RDS
Проверьте, что у вас на RDSH хосте указан правильный сервер лицензирования и тип лицензии (CAL Per User/ CAL Per Device).
Адрес сервера с лицензиями RDS можно указать:
-
-
- В настройках RDS коллекции: Tasks -> Edit Deployment Properties -> RD Licensing;
- Через GPO: Use the specified Remote Desktop license servers (Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing)
- С помощью PowerShell (см. статью “Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов”).
- В настройках RDS коллекции: Tasks -> Edit Deployment Properties -> RD Licensing;
-
#5 – Уберите лимит RDP подключений в GPO
Через групповые политики можно ограничить количество одновременных подключений по RDS. По умолчанию данная политика выключена.
С помошью gpresult нужно проверить, включена ли политика и какое в ней указано значение.
-
-
- Запустите командную строку с правами администратора и введите gpresult /H c:\gpresult.html
- Откройте файл gpresult.html, который лежит в корне диска C. Это обычный .html файл, рекомендуется открывать через internet explorer, так как в других браузерах он может отображаться некорректно;
- В разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host\Connections найдите Limit number of connections, либо в поиске по странице наберите Limit number of connections.
-
Если такой политики нет, значит она не применяется и ограничений по количеству одновременных подключений нет. Если политика есть и указано количество одновременных подключений, измените её значение на нужное вам число. Изменить групповую политику можно через оснастку gpedit.msc, если политика настроена через доменные GPO, отредактируйте соответствующую политику через gpmc.msc. После того как отредактируете политику, не забудьте набрать в командной строке gpupdate /force для немедленного применения политики.
#6 — Нестандартные решения: если ничего не помогает
Если ресурсов у вас хватает, ошибок в журнале нет, перезагружаться нельзя, а сброс сессии по каким-то причинам не помог, то следует попробовать следующие варианты:
-
- Проверьте, что на RDS сервере не включен Drain режим, который запрещает пользователям новые RDP подключения: chglogon.exe /QUERY . Если команда вернет сообщение “New user logons are DISABLED, but reconnections to existing sessions are ENABLED”, отключите Drain режим: chglogon.exe /enable
- В настройках RDP подключения (mstsc.exe) на клиенте mstsc снимите галку «Постоянное кэширование точечных рисунков» («Persistent bitmap caching»);
- Перезагрузите службу RDS. В командной строке с правами администратора наберите net stop termservice и net start termservice . Либо перезапустите службу удаленно с помощью PowerShell: Get-Service termservice –ComputerName msk-rds1 | Restart-Service
- Принудительно убейте процессы tstheme.exe;
- Рекомендуется применить все последние обновления для вашей версии Windows, воспользуйтесь стандартными средствами обновления.
Скатерть-самобранка, или как развернуть службы удаленного рабочего стола на Windows Server 2012 R2
Сегодня мы объясним, чем развертывание RDS Session Host на Windows Server 2012 R2 отличается от более ранних версий Windows Server и расскажем о доступных опциях развертывания. Remote Desktop Services на Windows Server значительно усовершенствовались за последнее время, но остается, тем не менее, много непонятного по причине множества вовлеченных в процесс компонентов. RD Session выполняют всю грязную работу, обслуживая терминальные сессии пользователей. Однако даже при самом примитивном сценарии обязательно использование RD Connection Broker (посредника подключений к удаленному рабочему столу). Еще до того, как вы запланируете развертывание служб удаленного рабочего стола, стоит ознакомиться с его ролью.
RD Connection Broker
Когда сеанс удаленного рабочего стола отключается, приложения в сеансе пользователя продолжают работать. Для отслеживания сеансов пользователей RD Connection Broker (Посредник подключений удаленного рабочего стола) хранит такую информацию, как название сеансов удаленных рабочих столов, где проходит каждая сессия, состояние сессии и ее идентификатор, а также информация о подключенных пользователях в каждой сессии. Эта информация используется для подключения пользователей к существующим сеансам на серверах RD Session Host (терминальные сервера Windows). При создании новой сессии RD Connection также играют свою роль путем подключения пользователей к серверам RD Session Host по мере загрузки.
Начиная с Windows Server 2012, посредники подключений к удаленному рабочему столу не только хранят данные о пользовательских сессиях, но и информацию о конфигурации. Посредник подключений к удаленным рабочим столам использует внутреннюю базу данных Windows для сохранения сессии и информации о конфигурации, кроме случаев, когда установлен режим высокой доступности (HA), где используется сервер SQL 2008 R2 (или более поздняя версия).
Посредник подключений к удаленному рабочему столу требует домен Active Directory, но не может быть установлен на контроллере домена (DC). Можно развернуть службы удаленного рабочего стола в рабочей группе с помощью установки роли сервера, хотя при этом теряется возможность централизованного управления, пульты управления и функционал удаленных приложений Remoteapp.
Централизованная публикация приложений
В Windows Server 2012 также введен концепт коллекций (collections). В Windows Server 2008 R2 требовалось, чтобы системные администраторы публиковали приложения для каждого RD Session Host в индивидуальном порядке. Теперь посредник подключений к удаленному рабочему столу хранит информацию о конфигурации.
Опции развертывания: быстрая и стандартная
Ключ к пониманию того, как развернуть RDS на Windows Server 2012 R2 в понимании того, что недостаточно установки роли RD Session Host. Диспетчер серверов обеспечивает специальный режим развертывания для установки RDS, таким образом все необходимые компоненты установлены в нужных местах, чтобы делает развертывание простым и быстрым.
Службы удаленного рабочего стола на Windows Server 2012 R2
В мастере добавления ролей и компонентов (Add Roles and Features Wizard) в диспетчере серверов есть специальная опция установки, установка служб удаленных рабочих столов (Remote Desktop Services installation), которую необходимо выбрать при развертывании служб удаленных рабочих столов. Формулировка при этом варианте немного смущает, но опция позволяет устанавливать хосты сеансов удаленных рабочих столов без развертывания полной инфраструктуры виртуальных ПК (virtual desktop infrastructure — VDI).
Стандартное развертывание — это модель развертывания по умолчанию, и если вы действительно хотите установить все необходимые роли на одном сервере, что не является лучшей практикой, то стоит выбрать эту опцию. Быстрая установка (Quick Start) может быть полезна в сценариях тестирования или в небольших филиалах, где есть только один доступный сервер.
Стандартное развертывание позволяет установить RD Connection Broker, RD Session Host и RD Web Access на одном сервере или на нескольких серверах, что является наиболее вероятным сценарием развертывания в производственной среде. Посредник подключений к удаленному рабочему столу включает внутреннюю базу данных Windows, RD Session Host и RD Web Access roles. Все это является обязательным, но RD Gateway играет факультативную роль. RD Web Access предоставляет пользователям доступ к RemoteApps или рабочим столам из меню «Пуск» или с . Если вы хотите использовать RDS больше, чем в течение пробного периода, вам потребуется дополнительно устанавливать роль лицензирования удаленных рабочих столов.
Консоли управления
Все необходимые консоли управления можно найти в диспетчере серверов на сервере, где установлен посредник подключений к удаленным рабочим столам, за исключением RD Gateway и RD Licensing.
Установка служб удаленного рабочего стола на Windows Server 2012 R2
Здесь мы расскажем о стандартной модели развертывания, которая позволяет распределить роли серверов удаленного рабочего стола или установить их для одного сервера.
Стандартное развертывание — это модель развертывания по умолчанию, и даже при том условии, что для демонстрации будут установлены три роли сервера на один сервер, это не лучшее решение. Внутренняя база данных Windows устанавливается как часть процесса для поддержки роли посредника подключений к удаленному рабочему столу, также как и некоторые компоненты IIS для RD Web Access, которые обеспечивают доступ к RemoteApps или рабочим столам из меню «Пуск» или с .
Лицензирование
При желании использовать развернутые службы удаленного рабочего стола более чем в течение тестового периода необходимо установить роль RD Licensing, добавить лицензию, зарегистрировать сервер лицензирования с Active Directory, а затем добавить RD Licensing в . RD Licensing устанавливается также, как любая другая роль, поэтому нет необходимости использовать специальную опцию развертывания в диспетчере серверов.
Развертывание служб удаленного рабочего стола
Серверы, которые вы планируете использовать в своем , должны быть добавлены в Пул Серверов (Server Pool) в диспетчере серверов перед началом процесса. Вам потребуется домен Active Directory domain и аккаунт, у которого есть разрешение на установку ролей сервера на выбранный сервер (серверы). Дополнительно может быть установлена роль посредника подключений к удаленному рабочему столу на контроллер домена.
- Откройте Диспетчер серверов;
- Выберите «Добавить роли и компоненты» в меню управления;
- В Мастере добавления ролей и компонентов нажмите «Далее» на экране «Перед началом установки» (Before You Begin).
- На экране «Выберите тип установки» выберите «Установка служб удаленного рабочего стола» и нажмите «Далее»;
- На экране «Выберите тип развертывания» выберите «Стандартное» и нажмите «Далее».
Стандартное или быстрое развертывание
- На экране «Выберите сценарий развертывания» выберите развертывание серверов сеансов ( desktop deployment) и нажмите «Далее».
- На экране обзора служб ролей (Review role services) отметьте службы ролей для установки и нажмите «Далее».
Роли служб удаленных рабочих столов
- На экране определения сервера посредника подключений к удаленному рабочему столу кликните дважды на сервер в пуле серверов для того, чтобы добавить его в список выбранных. Это тот сервер, на который будет установлена роль посредника подключений к удаленному рабочему столу. Нажмите «Далее».
Выберите сервер из пула серверов
- На экране определения сервера RD Web Access повторите предыдущий шаг, чтобы добавить сервер в Selected, или поставьте галочку в «Установить службу роли RD Web Access на сервер посредника подключений к удаленному рабочему столу» (Install the RD Web Access role service on the RD Connection Broker server), если вы хотите установить эту роль на тот же сервер, что и посредника подключений к удаленному рабочему столу. Нажмите «Далее». continue.
- На экране определения серверов RD Session Host выберите один или более серверов из пула серверов, кликнув дважды или с помощью выбора мышью и нажатия на стрелку в центре диалогового окна.
- На экране подтверждения нажмите «Перезапустить сервер автоматически, если необходимо» (Restart the destination server automatically if required) и нажмите «Развернуть».
- Когда 3 роли сервера будут установлены, нажмите «Закрыть» на экране хода развертывания (View progress).
Ход развертывания
Теперь необходимо залогиниться на сервере, где установлена роль посредника подключений к удаленному рабочему столу, открыть Диспетчер серверов и нажать «Службы удаленного рабочего стола» (Remote Desktop Services) в списке опций слева, чтобы увидеть информацию по вашему .
Дашборд служб удаленного рабочего стола в Диспетчере серверов