Хочу Знать
В Windows 2012 R2 и Windows 8.1 Microsoft вернула функционал Remote Desktop Shadowing (теневого подключения). Напомним, что режим Shadow (теневой сеанс) – может использовать администратором для просмотра и управления существующей RDP сессией любого пользователя. Этот режим работы поддерживается практически с первых версий терминального сервера Microsoft и неожиданно был убран в Windows Server 2012 (связано с переносом стека rdp из режима ядра в пользовательский режим). Функционал RDS Shadow работает и в следующих версиях ОС: Windows Server 2016 / Windows 10.
Кроме того, у режима теневого подключения RDS Shadow и RDP клиента появился ряд новых интересных возможностей. Полный список параметров RDPклиента mstsc.exe, определяющих возможность удаленного теневого подключения к сессии конечного пользователя:
Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt]]
/shadow:ID – подключится к RDP сессии с указанным ID.
/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).
/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).
/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.
/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.
Ограничения теневых сеансов RDS в Windows 2012 R2
Подключаться к чужим сессиям может только администратор сервера. Делегировать эти права обычным пользователем нельзяRDS Shadow не будет работать в сетях на базе рабочих групп
Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt foruser consent (Запрашивать согласие пользователя на подключение к сессии).
Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:
Запрос на удаленное наблюдение
Winitpro\administrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос.
Winitpro\administrator is requesting to view your session remotely. Do you accept the request?
Если пользователь подтвердит, подключение, в режиме просмотра администратор увидит его рабочий стол, но не сможет взаимодействовать с ним.
Совет. Для отключения от сессии пользователя и выхода из shadow-режима нужно нажать ALT+* на рабочей станции или Ctrl+* на терминальном сервере (если не заданы альтернативные комбинации).
Если же пользователь отклонит подключение, появится окно:
Shadow Error: The operator or administrator has refused the request
Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:
Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.
Параметры удаленного управлениями RDS сессиями пользователя настраиваются политикой Set rules for remote control of Remote Desktop Services user sessions (Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов), которая находится в разделе Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections (Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов – Узел сеансов удаленных рабочих столов –> Подключения) в пользовательской и «компьютерной» секциях GPO. Данной политике соответствует dword параметр реестра Shadow в ветке HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services.
Этой политикой можно настроить следующие варианты теневого подключения через теневое подключение RD Shadow::
- No remote contol allowed — удаленное управление не разрешено (значение ключа реестра Shadow = 0);
- Full Control with users’s permission — полный контроль с разрешения пользователя (1);
- Full Control without users’s permission — полный контроль без разрешения пользователя (2);
- View Session with users’s permission – наблюдение за сеансом с разрешением пользователя (3);
- View Session without users’s permission – наблюдение за сеансом без разрешения пользователя (4).
Теневое подключение RDS Shadow из PowerShell
Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.
В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:
Mstsc /shadow:3 /control
Также для получения списка всех сессии на сервере можно выполнить команду
На экране отобразится список RDP сессий, их ID и статус: активная сесиия (Active) или отключенная (Disconnected).
Для получения списка сессий на удалённом сервере выполните команду:
query session /server:servername
Для более удобного теневого подключения к сессиям можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех сеансов и предложит указать сеанс, к которому нужно подключится:
shadow.bat
set /P rcomp=»Enter name or IP of a Remote PC: »
query session /server:%rcomp%
set /P rid=»Enter RDP user ID: »
start mstsc /shadow:%rid% /v:%rcomp% /control
Можно поместить данный файл в каталог %Windir%\System32, в результате для теневого подключения достаточно выполнить команду shadow.
Для подключения к консольной сессии можно использовать такой скрипт:
set /P rcomp=»Enter name or IP of a Remote PC: »
for /f «tokens=3 delims= » %%G in (‘query session console /server:%rcomp%’) do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control
Как разрешить обычном пользователям использовать теневое подключение
В рассмотренных выше примерах для использования теневого подключения к терминальным сессиям необходимы права локального администратора на RDS сервере. Однако можно разрешить использовать теневое (shadow) подключение для подключения к сессиям пользователей и простым пользователям (не давая им прав локального администратора на сервере).
К примеру, вы хотите разрешить членам группы AllowRDSShadow использовать теневое подключение к сессиям пользователей, выполните команду:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corp\AllowRDSShadow’,2
В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2012 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2016.
Для решения проблемы нужно установить отдельные обновления:
- для Windows Server 2016 — KB4057142 (от 17 января 2018)
- для Windows Server 2012 R2 — KB4057401 (от 17 января 2018)
Теневое RDP подключение к рабочему столу пользователя в Windows 10
Помимо использования Remote Assistance, вы можете удаленно подключиться к рабочему столу пользователя Windows 10 с помощью теневого RDP подключения (Remote Desktop Shadowing). Большинство администраторов так или иначе пользовались этим функционалом для подключения к сессиям пользователей на терминальных RDS серверах с Windows Server 2012 R2 / Server 2016. Однако далеко не все знают, что теневое подключение можно использовать для удаленного просмотра и взаимодействия с рабочим столом пользователя и на десктопной Windows 10. Рассмотрим, как это работает.
Как вы помните, если попытаться удаленно подключится к компьютеру с Windows 10 через RDP, то сессия пользователя, работающего локально выбивается (даже если вы включите возможность использования нескольких одновременных RDP сессий в Windows 10). Однако вы можете подключится непосредственно подключиться к консольной сессии пользователя без блокировки его сеанса.
Предположим, вам нужно подключиться с сервера Windows Server 2012 R2 к рабочему столу пользователя, работающего локально за рабочей станцией с Windows 10.
Для теневого подключения к сессии пользователя нужно использовать стандартную RDP утилиту mstsc.exe. Формат команды такой:
Mstsc.exe /shadow: /v:
Также можно использовать одну из опций:
- /prompt – запросить имя и пароль пользователя, под которым выполняется подключение (если не указано, подключение выполняется под текущим пользователем).
- /control – режим взаимодействия с сеансом пользователя. Если параметр не задан, вы подключитесь в режиме просмотра (наблюдения) сессии пользователя, т.е. вы не сможете управлять его мышью и вводить данные с клавиатуры;
- /noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.
Режим теневого подключения (нужно ли запрашивать подтверждение пользователя, и возможно управления в сессии или только наблюдение) настраивается с помощью групповой политики или редактирования реестра.
Политика находится в разделе Конфигурация компьютера ->Административные шаблоны –> Компоненты Windows –> Службы удаленных рабочих столов –> Узел сеансов удаленных рабочих столов –> Подключения (Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections) и называется «Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов» (Set rules for remote control of Remote Desktop Services user sessions).
Вместо включения политики можно выставить значение dword ключа с именем Shadow в ветке реестра HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services. Допустимые значения:
- 0 – запретить удаленное управление;
- 1 — полный контроль с разрешения пользователя;
- 2 — полный контроль без разрешения пользователя;
- 3 — наблюдение за сеансом с разрешения пользователя;
- 4 — наблюдение за сеансом без разрешения пользователя.
По умолчанию данный ключ не задан и теневое подключение осуществляется в режиме полного контроля с разрешения пользователя.
Чтобы удаленно подключится к компьютеру через теневое подключение, у подключающейся учетной записи должны быть права администратора на компьютере, а в свойствах системы включен удаленный рабочий стол (RDP).
Запросим удаленно список сессий на рабочей станции Windows 10 командой:
qwinsta /server:192.168.11.60
Как вы видите, на данном компьютере имеется одна консольная сессия пользователя с идентификатором >
Итак, попробуем удаленно подключиться к сессии пользователя через теневое подключение. Выполните команду:
Mstsc /shadow:1 /v:192.168.11.60
На экране пользователя Windows 10 появится запрос:
Если пользователь разрешит соединение, вы подключитесь к его консольному сеансу и увидите его рабочий стол. Вы будете видеть все действия пользователя, но не сможете взаимодействовать с его сессией.
Если проверить сетевые соединения с помощью TCPView, можно увидеть, что взаимодействие идет через RemoteRPC (а не по протоколу RDP с портом TCP 3389). Т.е. для подключения используется случайный TCP порт из высокого диапазона RPC. На стороне подключающегося компьютера соединение устанавливает mstsc.exe, на стороне клиента подключение обрабатывает rdpsa.exe или rdpsaproxy.exe (в зависимости от билда Windows 10). Поэтому на клиенте должен быть включен RemoteRPC:
HKLM\SYSTЕM\CurrеntCоntrоlSеt\Cоntrol\Tеrminal Sеrvеr
“AllоwRemotеRPС”=dwоrd:00000001
Функционал теневого подключения Remote Desktop Shadowing работает в Windows 10 / 8.1 и Windows Server 2012 R2 /2016. Чтобы теневое подключение работало на клиентах с Windows 7 SP1 (Windows Server 2008 R2) нужен RDP клиент версии 8.1 – поэтому придется установить обновление KB2830477 (требует наличия установленных KB2574819 и KB2857650).
Таким образом Remote Desktop Shadowing можно использовать как аналог Remote Assistance (Удаленный помощник) или TeamViewer для локальной или корпоративной сети.