RDS Shadow: теневое подключение к RDP сеансам пользователей в Windows Server

Режим теневого (shadow) подключения в Windows позволяет администратору подключаться к RDP/RDS сеансу любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним (с или без согласия пользователя). Как правило, режиме Remote Desktop Shadowing используется для оказания технической поддержки пользователей на RDP серверах. Теневые подключения к RDP сессиям пользователей возможные во всех современных версиях Windows, включая Windows Server 2025,2022,2019,2016 и в десктопные Windows 11 и 10.

Теневое подключение к RDP сессии пользователя в Windows Server

Администратор может подключиться к активной RDP сессии пользователя из графического интерфейса Server Manager (на сервере с установленной ролью Remote Desktop Services, RDSH) или из командной строки с помощью встроенной утилиты mstsc.exe.

Запустите консоль Server Manager на RDS сервере, перейдите в раздел Remote Desktop Services -> выберите необходимую RDS коллекцию (по умолчанию, QuickSessionCollection ).

Windows Server RDS теневое подключение к сесии пользователя из консоли Server Manager

В правом окне будет отображаться список сессий пользователей на серверах в этой RDS коллекции. Щелкните правой кнопкой по сессии нужно пользователя, выберите в контекстном меню Shadow (Теневая копия).

Подключиться теневым сеансом можно только к активной сессии пользователя. Если сессия находится в состоянии Disconnected (отключена по таймауту), подключиться к такой сессии нельзя:

Shadow Error - The specified session is not connected.

oshibka shadow подключения The specified session is not connected

Появится окно c параметрами теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).

параметры теневогого подключения к рабочему столу пользователя

Если эта опция включена, в сессии у пользователя появится запрос на подтверждения подключения:

Winitpro\administrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?
Winitpro\administrator is requesting to view your session remotely. Do you accept the request?

уведомление administrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?

Запрос на удаленное теневое наблюдение

Если пользователь подтвердит подключение в режиме View, то администратор увидит его рабочий стол в режиме просмотра, но не сможет взаимодействовать с ним.

просмотр сессии пользователя через теневое подключение

Если выбрана опция «Запрашивать согласие пользователя», в сессии у пользователя появится запрос:

Запрос на удаленное наблюдение/ Remote Monitoring Request
Если пользователь отклонил административное Shadow RDS подключение, появится окно:
Shadow Error: The operator or administrator has refused the request.

ошибка rds shadow юзер запретил теневое подключение

Совет. Для отключения от сессии пользователя и выхода из shadow-режима, нужно нажать ALT+* на рабочей станции или Ctrl+* на RDS сервере.

Ctrl + Alt + Break переключить режим теневого подключения в полноэкранный.

Для удаленного подключения через режим RD Shadow, на хосте должны быть разрешены следующие правила файервола:

  • Remote Desktop – Shadow (TCP-In)
  • Remote Desktop – User Mode (TCP-In)
  • Remote Desktop – User Mode (UDP-In)

Теневое RDP подключение из командной строки mstsc

Однако для удаленного теневого подключения гораздо удобнее использовать стандартный RDP клиент Windows (mstsc.exe), в котором есть несколько параметров для подключения к пользователю через RDS Shadowing:

Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]

mstsc.exe параметры теневого shadow подключения к rdp/rds сессиям пользователей

  • /shadow:sessionID – подключиться к RDP пользователю по ID его терминальной сессии
  • /v:servername – можно указать имя удаленного хоста (RDP/RDS терминального сервера). Если имя сервера не указано, выполняется подключение к локальным сеансам на текущем хосте
  • /control – подключиться в режиме взаимодействия с сеансом (рабочим столом) пользователя. Администратор может управлять мышкой пользователя, вводить данные с клавиатуры. Если эта опция не указана, используется режим просмотра сессии пользователя;
  • /noConsentPrompt – опция позволяет администратору принудительно подключиться к любой сессии, не запрашивая у пользователя подтверждение на подключение
  • /promptподключиться с использованием другой учетной записью (отличной от текущей). Появится окно запроса имя пользователя и пароль для подключения к сеансу.
В отличии от предыдущего случая, для теневого подключения из командной строки не требуется установленная и настроенная RDS роль. Таким образом, способ применим и для подключения к десктопным десктопной редакциям Windows 10 и 11, к которой разрешены множественные RDP подключения.

Таким образом, чтобы подключиться к рабочему столу пользователя, нужно сначала узнать идентификатор его RDP сессии. Выполните команду:

quser или qwinsta

На экране отобразится список RDP сессий, их ID и статус: активная сессия (Active) или отключенная (Disconnected).

qwinsta: список rdp сессий пользователей

Найдите в списке имя пользователя, к которому вы хотите подключиться и ID его сеанса (в нашем примере ID= 3 ). Чтобы подключиться теневым подключение к этой RDP сессии в режиме управления, укажите этот ID в команде:

mstsc /shadow:3 /control

mstsc - shadow: теневое подключение к пользвователю с управлением

В указанной сессии появится запрос на теневое подключение, которое пользователь может принять или отклонить.

Пользователь длжен подтвердить подключение администратора в его сессию через rdp shadowing

Чтобы вывести список сессий пользователей на удаленном сервере, укажите его имя в команде:

qwinsta /server:rds01

Чтобы подключиться к сессии пользователя на удаленном сервере, используйте команду:

Mstsc /v:rds01:3389 /shadow:3 /control

Чтобы подключиться к сессии пользователя без запроса, используйте команду:

mstsc /shadow:3 /control /noConsentPrompt

Однако с настройками по умолчанию в Windows запрещено подключаться к сессии пользователя без запроса:

Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.

теневое подключение запрещено групповыми политиками

Далее рассмотрим, как изменить настройки безопасности теневых подключений в Windows.

Групповые политики управления теневыми подключениями к RDS сессиям в Windows

В редакторе групповых политик ( gpedit.msc ) можно изменить настройки теневого управления 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.

Этой политикой можно настроить следующие варианты теневого подключения RD Shadow:

  • No remote control 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 ).

политика Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов

После изменения параметра, обновите настройки групповых политик на RDP/RDS хосте.

Данной политике соответствует DWORD параметр реестра Shadow в ветке HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках). Таким образом, чтобы разрешить полный контроль в теневом подключении к RDP сессии без уведомления пользователя, можно создать этот параметр реестра командой:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 2

Теневые подключения работают не только в Windows Server с ролью Remote Desktop Services, но и доступны для подключения к рабочим столам пользователей на компьютерах с Windows 11 и 10 .

Теневое подключение RDS Shadow из PowerShell

Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.

В первую очередь нужно получить список пользовательских сессий на терминальном RDS сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):
Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
Get-RDUserSession Powershell

Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий BAT скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными RDP сеансами. Вам нужно будет указать ID сеанса, к которому нужно подключится через Shadow сессию:

shadow.bat

@echo off
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.

Либо можно воспользоваться PowerShell скриптом с графическим интерфейсом для вывода списка активных RDP сеансов на локальном сервере (готовый скрипт на нашем GitHub репозитории rdp_shadow_connection_gui.ps1).

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

графический powershell скрипт для теневого подключения к сессиям пользователей

Для запуска скриптов PowerShell (Ps1) на компьютере нужно настроить политику PowerShell Execution.

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

while($true){
if (Get-Process -Name "RdpSa" -ErrorAction SilentlyContinue){[console]::beep(1000,500);(New-Object System.Media.SoundPlayer "C:\Windows\Media\chimes.wav").PlaySync();Write-Host "RdpSa is running at $(Get-Date)"}
Start-Sleep -Seconds 30
}

Аудит теневых подключений к сессиям в Windows

Если вам нужно вести аудит RDS Shadow подключений к пользователям, используйте в качестве фильтра следующие события из журнала Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational:

  • Event ID 20510: Shadow View Permission Granted — Предоставлено разрешение на теневой просмотр
  • Event ID 20506: Shadow View Session Started — Запущен теневой просмотр сеанса
  • Event ID 20507: Shadow View Session Stopped — Остановлен теневой просмотр сеанса
  • Event ID 20510: Предоставлено разрешение на теневое управление

Событие теневого подключения • Event ID 20506: Shadow View Session Started

С помощью небольшого скрипта PowerShell можно вывести из журнала событий информацию о начале и окончании теневых подключений:

$logName = "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational"
$eventIds = 20506, 20507
Get-WinEvent -FilterHashtable @{LogName = $logName; Id = $eventIds} | ForEach-Object {
$event = $_
$message = $event.Message
$timeCreated = $event.TimeCreated
Write-Host "Time: $timeCreated"
Write-Host "Event ID: $($event.Id)"
Write-Host "Message: $message"
Write-Host "-----------------------------------"
}

Как разрешить обычном пользователям использовать теневое подключение?

В рассмотренных выше примерах для использования теневого подключения к RDP сессиям пользователей необходимы были права локального администратора на RDS сервере. Однако вы можете разрешить использовать теневое (shadow) подключение и для непривилегированных пользователей (не предоставляя им прав локального администратора на компьютере/сервере).

Чтобы разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям, выполните команду:

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName='RDP-Tcp') CALL AddAccount 'corp\AllowRDSShadow',2

Возможные права доступа:

  • 0 = WINSTATION_GUEST_ACCESS
  • 1 = WINSTATION_USER_ACCESS
  • 2 = WINSTATION_ALL_ACCESS

В связи с тем, что команда WMIC не поддерживается в новых версиях Windows, это изменение нужно вносить через Invoke-CimMethod:

$group = «reslab\AllowRDSShadow»

(Get-CimInstance -Namespace "root\CIMV2\TerminalServices" -ClassName Win32_TSPermissionsSetting -Filter "TerminalName='RDP-Tcp'") |

Invoke-CimMethod -MethodName AddAccount -Arguments @{AccountName=$group; PermissionPreSet=2}

Win32_TSPermissionsSetting дать права на теневое подключение пользователям

Чтобы удалить права теневого подключения для группы, выполните:

$group = "corp\AllowRDSShadow"

$tsPermissions = Get-CimInstance -Namespace "root\CIMV2\TerminalServices" -ClassName Win32_TSPermissionsSetting -Filter "TerminalName='RDP-Tcp'"

Invoke-CimMethod -InputObject $tsPermissions -MethodName RemoveAccount -Arguments @{AccountName=$group}

Возможные ошибки и проблемы при использовании RD Shadowing

  • Если RDP сессия пользователя заблокирована, или на его рабочем столе отображается запрос UAC при включенном Secure Desktop (настройки по умолчанию), то при подключении из mstsc без флага /control , администратор уведёт черный рабочий стол с символом паузы. (при использовании опции /control запрос контроля учетных записей (UAC) не выводится в режиме Secure Desktop). Черный экран и знак пауза в окне теневого rdp подключения
  • Если при теневом подключении к сеансу RemoteApp, RD shadowing не отображает картинку опубликованного приложения RemoteApp, а только черный экран, отключите в GPO параметр Использовать дополнительную графику RemoteFX для удаленно приложения RemoteApp (Use advanced RemoteFX graphics for RemoteApp). gpo: отключить remotefx для remoteapp

Предыдущая статья Следующая статья


Комментариев: 183 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)