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

Что такое теневое копирование или Remote Desktop Shadowing. Как делегируются права доступа к Shadow без прав администратора. Как управлять теневым подключением

Обновлено 15.03.2022

shadow rdp

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали установку Hyper-V в Windows 11. Сегодня я хочу с вами разобрать тему удобной поддержки пользователей встроенными средствами Windows. Речь пойдет, о теневом подключении RDP или Remote Desktop Shadowing. Мы рассмотрим, как она реализована, как предоставляются права и многое другое. Статья получиться большой, но поверьте оно того стоит. Благодаря этому вы сможете сэкономить бюджеты компании, отказавшись от стороннего ПО.

💻 Что такое теневой сеанс Remote Desktop Shadowing?

Все мы прекрасно помним 2020 год, когда массово вводились ограничения и все пользователи переходили на дистанционное положение. Это заставило все компании организовать для сотрудников рабочее окружение, и самое главное это отслеживание и предоставление удаленной помощи, при возникших проблемах. Для удаленной помощи используется много различного программного обеспечения, например teamviewer, VNC, Dameware и многое другое, большая проблема в том, что все они платные для коммерческого использования. Не все компании готовы платить за это деньги, но в Windows есть и встроенная возможность, о которой многие просто не знают.

Режим Shadow (теневой сеанс RDP/RDS) — Это встроенное средство, позволяющее системным администраторам производить подключение в RDP сессию любого пользователя, видя его экран, имея возможность производить любые манипуляции курсором и сеансом, одним словом полное взаимодействие. Remote Desktop Shadowing идет в составе начиная с Windows 8.1, Windows Server 2012 R2 и выше.

Теневое копирование служб удаленных рабочих столов имеет как графический интерфейс, так и утилиту командной строки. Есть две версии функции. Так как устаревшая версия Remote Desktop Services Shadowing несовместима с последней версией утилиты, то я не буду подробно описывать предыдущую версию, а лишь упомяну несколько слов в качестве исторической справки. В более ранних версиях Windows файл shadow.exe позволял пользователю подключаться к удаленному узлу с помощью метода теневого копирования служб удаленных рабочих столов. Короче говоря, это предшественник утилиты mstsc и ее параметра /shadow. Он был представлен в Windows Server 2003 и доступен во многих версиях Windows.

Кроме того, есть два приложения с графическим интерфейсом, и они делают одно и то же: управление службами терминалов (TSAdmin), которое присутствует с Windows Server 2003, и диспетчер служб удаленных рабочих столов (RDSM), который является частью инструментов удаленного администрирования сервера (RSAT) и заменяет TSAdmin в Windows Server 2012.

Ключевое различие между версиями RDS Shadowing заключается в том, что в устаревшей версии вы должны сначала установить соединение RDP, чтобы получить сеанс на удаленном хосте, прежде чем вы сможете затенить чей-либо еще сеанс на этом хосте. В последней версии вы можете затенить сеанс пользователя на удаленном хосте с консоли вашего собственного хоста. В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2022 и Windows 11.

⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов

Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:

  • Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
  • Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.

Какой уровень прав необходим для использования Remote Desktop Services Shadowing

Для того, чтобы вы могли производить теневое подключение к пользователям RDS фермы или отдельным серверам, вам нужны права администратора на конечных серверах, но и это можно обойти, произведя точечное делегирование прав на функцию shadow, не имея при этом административного доступа на конечных серверах. Как это организовать я покажу, немного ниже.

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

Перед тем, как мы с вами разберем практические методы подключения Remote Desktop Shadow, нам нужно настроить групповую политику, которая будет определять, как оператор, кто будет помогать конечному пользователю, будет с ним взаимодействовать. У системного администратора есть возможность оставить пользователю одобрение подключения или же можно сделать без уведомления, существует пять вариантов политики.

  • No remote control allowed — удаленное управление не разрешено (значение параметра реестра 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).

Данный ключ реестра можно найти в разделе HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services под названием «Shadow«

Найти данную политику можно по пути:

Конфигурация Компьютера — Политики — Административные шаблоны — Компоненты Windows — Службы удаленных рабочих столов — Узел сеансов удаленных рабочих столов — Подключения (Policies — Administrative Templates — Windows components — Remote Desktop Services — Remote Session Host — Connections)

Она будет иметь название «Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов (Set rules for remote control of Remote Desktop Services user sessions)«

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

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

reg query «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow

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

reg add «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow /t REG_DWORD /d 4

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

reg delete «HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services» /v Shadow /f

🌐 Подключение Remote Desktop Shadow из графического интерфейса

Данный метод является наверное самым удобным, так как позволяет визуально все видеть, контролировать. Все, что вам нужно это собранная оснастка по управлению RDS фермой в диспетчере серверов, как это делать смотрите по ссылке слева. В качестве тестового пользователя я буду использовать Барбоскина Геннадия Викторовичу (Barboskin.g). Для начала давайте его найдем, для этого в оснастке выберите нужную коллекцию, в области «Подключения» произведите поиск вашего пользователя. После его нахождения кликните по нему правым кликом, в контекстном меню вы увидите пункт «Теневая копия (Shadow)«.

Подключение Remote Desktop Shadow из графического интерфейса

У вас появится дополнительное окно с параметрами теневой копии:

  • Удаленный сеанс — Просмотреть/Управление. Тут либо вы просто наблюдатель, все действия делает сам пользователь или же полный контроль.
  • Запрашивать согласие пользователя

Параметры теневого копирования в RDS

У пользователя на удаленном сервере появится окно «Запрос на удаленное наблюдение. Пользователь запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос? (User is requesting to view your session remotely. Do you accept the request?) «, тут он может подтвердить или отказаться.

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

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

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

Согласно настройкам групповой политики требуется согласие пользователя. Проверьте настройки групповой политики (The Group Policy setting is configured to require the user’s consent)

The Group Policy setting is configured to require the user’s consent

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

Сеанс теневого копирования

Если пользователь закроет окно RDP подключения, то он перейдет в статус «Отключен (Disconnected)«, то вас выкинет из сессии теневого копирования. Вы увидите:

Сеанс с теневым доступом был отключен

Сеанс с теневым доступом был отключен

Подключиться к сеансу в статусе «Отключен (Disconnected)» не получиться, опция «Теневая копия (Shadow)» просто не будет присутствовать в списке

сеанс в статусе "Отключен (Disconnected)

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

Второй вариант, которым я могу пользоваться при теневом копировании к пользователю RDP, это использование бесплатного ПО по работе с RDS. Оно называется Terminal Services Manager, о нем я вам делал подробный обзор. Найдите в списке пользователей нужного вам, кликните по нему правым кликом и выберите пункт «Shadow«.

Использование Shadow в Terminal Services Manager

У вас так же появится окно, где вы должны запросить доступ с нужным уровнем, а далее все как описано выше.

Использование Shadow в Terminal Services Manager

🔍 Логирование сессий теневого копирования

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

Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational

Вот такая будет последовательность.

  • Событие ID 20508

Событие ID 20508: Предоставлено разрешение на теневой просмотр. Пользователь barboskin.g (идентификатор сеанса: 440) предоставил разрешение пользователю Сёмину Ивану

Событие ID 20508

  • Событие ID 20503

Событие ID 20503: Запущен теневой просмотр сеанса. Просмотр пользователем (Иван Сёмин) на компьютере c-10-.root.pyatilistnik.org сеанса пользователя ROOTbarboskin.g (идентификатор сеанса: 440)

Событие 20503

  • Событие ID 20504

Событие ID 20504 : Остановлен теневой просмотр сеанса. Просмотр пользователем (Семин Иван) на компьютере c-10.root.pyatilistnik.org сеанса пользователя ROOTbarboskin.g (идентификатор сеанса: 440)

Событие ID 20504 

  • Событие ID 20513

Событие ID 20513: Сбой теневого доступа к сеансу. Пользователю (Иван Сёмин) не удалось получить теневой доступ к сеансу пользователя Rootbarboskin.g (идентификатор сеанса: 440) из-за настроек групповой политики.

Событие ID 20513

  • Событие ID 20510

Событие ID 20510: Предоставлено разрешение на теневое управление. Пользователь ROOTbarboskin.g (идентификатор сеанса: 440) предоставил разрешение пользователю (Иван Сёмин)

Событие ID 20510

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

Напоминаю, что в качестве клиентской ОС у меня установлена Windows 11, а подключаться я буду к сессия пользователя работающего за Windows Server 2022. Для того, чтобы мы могли из PowerShell или командной строки использовать теневое копирование, мы должны вызвать утилиту mstsc.

mstsc — это по сити встроенный RDP клиент в операционной системе Windows. Запустите оболочку PowerShell и введите:

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

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

Справка mstsc

Перед использованием RDS Shadowing мне нужно выяснить SessionID клиента к которому буду подключаться, как это сделать я уже рассказывал. Я для своего обзора буду использовать камандлет Get-TSSession.

Get-TSSession -ComputerName Имя сервера

Нужный мне SessionID 517.

Получение SessionID в Get-TSSession

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

mstsc /v:term /shadow:517 /control /prompt

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

Если вы запускаете с запросом учетных данных другого пользователя, то появится всплывающее окно с вводом логина и пароля.

теневое копирование в powershell

У удаленного пользователя работающего по RDP появится всплывающее окно, где он должен подтвердить ваш запрос:

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

Запрос на подключение shadow

Удобный Bat файл для использования Remote Desktop Services Shadowing в командной строке

Создайте из текстового файла batник, поменяв расширение. И добавьте вот такое содержимое, теперь при его запуске будет выводиться список сеансов и удобный запрос ID.

@echo off
mode con:cols=100 lines=30
query session
echo
set /p usersession= Enter the session ID:
mstsc /shadow:%usersession% /control /noconsentprompt

Bat файл для использования Remote Desktop Services Shadowing в командной строке

Как дать права на теневые сеансы не администраторам

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

И так, режим shadow для непривилегированного пользователя в Windows Server организовывается через PowerShell. Вам необходимо имя группы, для которой будут делегированы права и выполнить команду на конечном сервере. Но для начала давайте посмотрим  у кого уже есть такие права. Для этого в оболочке PowerShell выполните:

Get-WmiObject Win32_TSAccount -Namespace rootCIMV2TerminalServices -Filter «TerminalName=’RDP-Tcp'»

Для cmd:

Обратите тут на поле _GENUS — это как раз разрешение. Данная команда вам будет полезна, когда вы добавите группу и проверите, появилась ли она тут. Цифра 2 в конце определяет тип доступа:

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

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

Далее я дам права для группы ROOTRDP-SHADOW-SESSION, чтобы она могла использовать Remote Desktop Services Shadowing.

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=»RDP-Tcp») CALL AddAccount «ROOTRDP-SHADOW-SESSION«,2

добавление прав на теневое подключение

Не забываем, что вам потребуется произвести перезагрузку сервера, чтобы все вступило в силу

Проверим, что они появились

успешное добавление прав на теневое подключение

Чтобы удалить права, выполните:

$Group = @(gwmi Namespace RootCIMv2TerminalServices query «select * from Win32_TSAccount where TerminalName=»RDP-TCP» AND AccountName=»ROOTRDP-SHADOW-SESSION«)

$Group.Delete()

Массовая настройка теневого подключения для не администраторов

Если у вас, как в моей компании RDS ферма состоит из 50 и более RDSH хостов, то чтобы вам не ходить по каждому из них, нужно воспользоваться вот таким моим скриптом PowerShell.

function Date {Get-Date -Format «yyyy.MM.dd HH:mm:ss»}

# Тут подгружаем файл со списком серверов

$comps_file = «$PSScriptRootservers.txt»

foreach ($server in (Get-Content $comps_file))
{
«$(Date) Trying to process server $server»

# wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName =»RDP-Tcp») CALL AddAccount ,2

$status = $null

$rds = Get-WmiObject -Namespace root/cimv2/terminalservices -Class Win32_TSPermissionsSetting -Filter «TerminalName = ‘RDP-Tcp'» -ComputerName $server
$status = $rds.AddAccount(«ROOTRDP-SHADOW-SESSION«,2)

if ($status.ReturnValue -eq 0)
{
«$(Date) All good»
}
else
{
«$(Date) Something went wrong»
}
}

Устранение непредвиденной ошибки

В Windows Server 2012R2-2016 вы можете получить ошибку «Неопознанная ошибка или Произошла внутренняя ошибка» при попытке использования функционала shadow. Тут все дело в том, что у вас не установлены обновления от 2018 года.

Неопознанная ошибка

в логах вы можете обнаружить события STATUS_BAD_IMPERSONATION_LEVEL

  • Windows Server 2016 — KB4057142 (от 17 января 2018)
  • Windows Server 2012 R2 — KB4057401 (от 17 января 2018)

Теневое shadow подключение к RDP/RDS сеансам позволяет администраторам подключиться к сессии любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим Remote Desktop Shadowing (теневого подключения) работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (кроме версии Windows Server 2012, в которой стек rdp перенесен из режима ядра в пользовательский режим). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2016 и Windows 10

Содержание:

  • Использование Remote Desktop Shadow из графического GUI
  • Групповые политики управления теневыми подключениями к RDS сессиям в Windows
  • Теневое подключение RDS Shadow из PowerShell
  • Как разрешить обычном пользователям использовать теневое подключение?

В Windows Server 2016/Windows 10 в стандартном RDP клиенте (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого (RDS Shadow) подключения к RDP сессии любого пользователя:

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 – позволяет использовать для подключения другую учетную запись, отличную от текущей. Запрашивается имя и пароль пользователя для подключения к сеансу.

Теневые сеансы можно использовать для подключения к сессиям пользователей на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, не обязательно обладать правами администратора на RDS хосте, на котором работает пользователь. Администраторы могут делегировать полномочия RDS Shadowing любым, даже не-административных учетным записям (об этом ниже).

Использование Remote Desktop Shadow из графического GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или графической консоли Server Manager. Для этого в консоли Server Manager на RDS сервере перейдите в раздел Remote Desktop Services -> выберите свою коллекцию, например QuickSessionCollection.коллекция QuickSessionCollection

В списке справа будет перечислен список пользователей у которых имеются сессии на данном RDS сервере. Щелкните правой кнопкой по сессии нужно пользователя, выберите в контекстном меню Shadow (Теневая копия).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 (Запрашивать согласие пользователя на подключение к сессии).параметры теневогого подключения к рабочему столу пользователя

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

Запрос на удаленное наблюдение/ Remote Monitoring Request
Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?
Winitproadministrator is requesting to view your session remotely. Do you accept the request?

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

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

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

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

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

Если пользователь отклонил административное Shadow RDS подключение, появится окно:

Shadow Error: The operator or administrator has refused the request.

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

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что это запрещено групповой политикой:

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

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

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

  • Event ID 20508: Shadow View Permission Granted
  • Event ID 20503: Shadow View Session Started
  • Event ID 20504: Shadow View Session Stopped

получаем логи rds shadow подключений из журнала событий Microsoft-Windows-TerminalServices-RemoteConnectionManager

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

Параметры удаленного управлениями 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках).

Этой политикой можно настроить следующие варианты теневого подключения 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
    ).

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

Вы можете настроить правила удаленного подключения в домене из консоли управления GPO
gpmc.msc
с помощью рассмотренного параметра политики, либо групповой политикой, вносящей изменения напрямую в реестр системы (последний вариант позволяет более тонко нацелить политику на компьютеры с помощью Group Policy Item Level Targeting).

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

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

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

Get-RDUserSession Powershell

На данном сервере мы обнаружили три активных RDP сессии пользователей. Чтобы подключиться к сессии пользователя с ID сессии 3, выполните команду:
Mstsc /shadow:3 /control /noConsentPrompt

mstsc shadow control noConsentPrompt подключится в сесиию пользователя из cmd

Также для получения списка всех RDP сессии на сервере (или десктопной редакции Windows 10 к которой разрешены множественные RDP подключения) можно использовать команду:

quser

Или

qwinsta

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

qwinsta - список RDP сесиий на удаленном сервере

Для получения списка сессий на удалённом сервере выполните команду:

query session /server:servername

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

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

Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными 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.

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

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

Также для теневого подключения можно использовать следующий PowerShell скрипт с простым графическим интерфейсом (rdp_shadow_connection.ps1):

Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$dlgForm = New-Object System.Windows.Forms.Form
$dlgForm.Text ='Session Connect'
$dlgForm.Width = 400
$dlgForm.AutoSize = $true
$dlgBttn = New-Object System.Windows.Forms.Button
$dlgBttn.Text = 'Control'
$dlgBttn.Location = New-Object System.Drawing.Point(15,10)
$dlgForm.Controls.Add($dlgBttn)
$dlgList = New-Object System.Windows.Forms.ListView
$dlgList.Location = New-Object System.Drawing.Point(0,50)
$dlgList.Width = $dlgForm.ClientRectangle.Width
$dlgList.Height = $dlgForm.ClientRectangle.Height
$dlgList.Anchor = "Top, Left, Right, Bottom"
$dlgList.MultiSelect = $False
$dlgList.View = 'Details'
$dlgList.FullRowSelect = 1;
$dlgList.GridLines = 1
$dlgList.Scrollable = 1
$dlgForm.Controls.add($dlgList)
# Add columns to the ListView
foreach ($column in $Header){
$dlgList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[s>]" , "" -replace "s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dlgListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dlgListItem.Subitems.Add($_.USERNAME) | Out-Null
$dlgListItem.Subitems.Add($_.ID) | Out-Null
$dlgListItem.Subitems.Add($_.STATUS) | Out-Null
$dlgList.Items.Add($dlgListItem) | Out-Null
}
$dlgBttn.Add_Click(
{
$SelectedItem = $dlgList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Выберите сессию для подключения")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$dlgForm.ShowDialog()

Данный скрипт отобразить графическую форму со списком активных RDP сеансов на локальном сервере. Вам останется только выбрать учетную запись пользователя и нажать Connect.

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

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

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

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

К примеру, вы хотите разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям. Выполните команду в cmd.exe с правами администратора:

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName='RDP-Tcp') CALL AddAccount 'corpAllowRDSShadow',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)

Теневое shadow подключение к RDP/RDS сеансам позволяет администраторам подключиться к сессии любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим Remote Desktop Shadowing (теневого подключения) работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (кроме версии Windows Server 2012, в которой стек rdp перенесен из режима ядра в пользовательский режим). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2016 и Windows 10

В Windows Server 2016/Windows 10 в стандартном RDP клиенте (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого (RDS Shadow) подключения к RDP сессии любого пользователя:

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 – позволяет использовать для подключения другую учетную запись, отличную от текущей. Запрашивается имя и пароль пользователя для подключения к сеансу.

Теневые сеансы можно использовать для подключения к сессиям пользователей на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, не обязательно обладать правами администратора на RDS хосте, на котором работает пользователь. Администраторы могут делегировать полномочия RDS Shadowing любым, даже не-административных учетным записям (об этом ниже).

Использование Remote Desktop Shadow из графического GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или графической консоли Server Manager. Для этого в консоли Server Manager на RDS сервере перейдите в раздел Remote Desktop Services -> выберите свою коллекцию, например QuickSessionCollection.коллекция QuickSessionCollection

В списке справа будет перечислен список пользователей у которых имеются сессии на данном RDS сервере. Щелкните правой кнопкой по сессии нужно пользователя, выберите в контекстном меню Shadow (Теневая копия).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 (Запрашивать согласие пользователя на подключение к сессии).параметры теневогого подключения к рабочему столу пользователя

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

Запрос на удаленное наблюдение/ Remote Monitoring Request
Winitproadministrator запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос?
Winitproadministrator is requesting to view your session remotely. Do you accept the request?

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

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

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

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

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

Если пользователь отклонил административное Shadow RDS подключение, появится окно:

Shadow Error: The operator or administrator has refused the request.

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

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что это запрещено групповой политикой:

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

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

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

  • Event ID 20508: Shadow View Permission Granted
  • Event ID 20503: Shadow View Session Started
  • Event ID 20504: Shadow View Session Stopped

получаем логи rds shadow подключений из журнала событий Microsoft-Windows-TerminalServices-RemoteConnectionManager

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

Параметры удаленного управлениями 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках).

Этой политикой можно настроить следующие варианты теневого подключения 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).

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

Вы можете настроить правила удаленного подключения в домене из консоли gpmc.msc с помощью рассмотренного параметра политики, либо групповой политикой, вносящей изменения напрямую в реестр системы (последний вариант позволяет более тонко нацелить политику на компьютеры с помощью Group Policy Item Level Targeting).

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

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

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

На данном сервере мы обнаружили три активных RDP сессии пользователей. Чтобы подключиться к сессии пользователя с ID сессии 3, выполните команду:
Mstsc /shadow:3 /control /noConsentPrompt

mstsc shadow control noConsentPrompt подключится в сесиию пользователя из cmd

Также для получения списка всех RDP сессии на сервере (или десктопной редакции Windows 10 к которой разрешены множественные RDP подключения) можно использовать команду:

quser

Или

qwinsta

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

qwinsta - список RDP сесиий на удаленном сервере

Для получения списка сессий на удалённом сервере выполните команду:

query session /server:servername

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

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

Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными 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.

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

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

Также для теневого подключения можно использовать следующий PowerShell скрипт с простым графическим интерфейсом (rdp_shadow_connection.ps1):

Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$dlgForm = New-Object System.Windows.Forms.Form
$dlgForm.Text ='Session Connect'
$dlgForm.Width = 400
$dlgForm.AutoSize = $true
$dlgBttn = New-Object System.Windows.Forms.Button
$dlgBttn.Text = 'Control'
$dlgBttn.Location = New-Object System.Drawing.Point(15,10)
$dlgForm.Controls.Add($dlgBttn)
$dlgList = New-Object System.Windows.Forms.ListView
$dlgList.Location = New-Object System.Drawing.Point(0,50)
$dlgList.Width = $dlgForm.ClientRectangle.Width
$dlgList.Height = $dlgForm.ClientRectangle.Height
$dlgList.Anchor = "Top, Left, Right, Bottom"
$dlgList.MultiSelect = $False
$dlgList.View = 'Details'
$dlgList.FullRowSelect = 1;
$dlgList.GridLines = 1
$dlgList.Scrollable = 1
$dlgForm.Controls.add($dlgList)
# Add columns to the ListView
foreach ($column in $Header){
$dlgList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[s>]" , "" -replace "s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dlgListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dlgListItem.Subitems.Add($_.USERNAME) | Out-Null
$dlgListItem.Subitems.Add($_.ID) | Out-Null
$dlgListItem.Subitems.Add($_.STATUS) | Out-Null
$dlgList.Items.Add($dlgListItem) | Out-Null
}
$dlgBttn.Add_Click(
{
$SelectedItem = $dlgList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Выберите сессию для подключения")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$dlgForm.ShowDialog()

Данный скрипт отобразить графическую форму со списком активных RDP сеансов на локальном сервере. Вам останется только выбрать учетную запись пользователя и нажать Connect.

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

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

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

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

К примеру, вы хотите разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям. Выполните команду в cmd.exe с правами администратора:

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName='RDP-Tcp') CALL AddAccount 'corpAllowRDSShadow',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)

В организации, где я работаю, удаленка запрещена в принципе. Была. До прошлой недели. Теперь пришлось в срочном порядке внедрять решение. От бизнеса — адаптация процессов к новому формату работы, от нас — PKI с пин-кодами и токенами, VPN, детальное логирование и много чего ещё.
Помимо всего прочего, я занимался настройкой инфраструктуры удаленных рабочих столов aka службы терминалов. У нас несколько RDS-развертываний в разных ЦОДах. Одной из задач было дать возможность коллегам из смежных подразделений ИТ подключаться к пользовательским сеансам в интерактивном режиме. Как известно, для этого есть штатный механизм RDS Shadow и самый простой способ его делегировать — дать права локального администратора на RDS-серверах.
Я уважаю и ценю своих коллег, но очень жадный до раздачи админских прав. :) Тех, кто со мной солидарен, прошу под кат.

Что ж, задача ясна, теперь — к делу.

Шаг 1

Создадим в Active Directory группу безопасности RDP_Operators и включим в нее учётные записи тех пользователей, которым хотим делегировать права:

$Users = @(
    "UserLogin1",
    "UserLogin2",
    "UserLogin3"
)
$Group = "RDP_Operators"
New-ADGroup -Name $Group -GroupCategory Security -GroupScope DomainLocal
Add-ADGroupMember -Identity $Group -Members $Users

Если у вас несколько AD-сайтов, то перед тем, как перейти к следующему шагу, нужно подождать, пока она будет реплицирована на все контроллеры домена. Обычно это занимает не более 15 минут.

Шаг 2

Дадим группе права на управление терминальными сессиями на каждом из RDSH-серверов:

Set-RDSPermissions.ps1

$Group = "RDP_Operators"
$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)
ForEach ($Server in $Servers) {
    #Делегируем право на теневые сессии
    $WMIHandles = Get-WmiObject `
        -Class "Win32_TSPermissionsSetting" `
        -Namespace "rootCIMV2terminalservices" `
        -ComputerName $Server `
        -Authentication PacketPrivacy `
        -Impersonation Impersonate
    ForEach($WMIHandle in $WMIHandles)
    {
        If ($WMIHandle.TerminalName -eq "RDP-Tcp")
        {
        $retVal = $WMIHandle.AddAccount($Group, 2)
        $opstatus = "успешно"
        If ($retVal.ReturnValue -ne 0) {
            $opstatus = "ошибка"
        }
        Write-Host ("Делегирование прав на теневое подключение группе " +
            $Group + " на сервере " + $Server + ": " + $opstatus + "`r`n")
        }
    }
}

Шаг 3

Добавим группу в локальную группу Пользователи удаленного рабочего стола на каждом из RDSH-серверов. Если у вас серверы объединены в коллекции сеансов, то делаем это на уровне коллекции:

$Group = "RDP_Operators"
$CollectionName = "MyRDSCollection"
[String[]]$CurrentCollectionGroups = @(Get-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup).UserGroup
Set-RDSessionCollectionConfiguration -CollectionName $CollectionName -UserGroup ($CurrentCollectionGroups + $Group)

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

Шаг 4

Подготовим для «управленцев» такой PS-скрипт:

RDSManagement.ps1

$Servers = @(
    "RDSHost01",
    "RDSHost02",
    "RDSHost03"
)

function Invoke-RDPSessionLogoff {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    logoff $SessionID /server:$ComputerName /v 2>&1
}

function Invoke-RDPShadowSession {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName,
        [parameter(Mandatory=$true, Position=1)][String]$SessionID
    )
    $ErrorActionPreference = "Stop"
    mstsc /shadow:$SessionID /v:$ComputerName /control 2>&1
}

Function Get-LoggedOnUser {
    Param(
        [parameter(Mandatory=$True, Position=0)][String]$ComputerName="localhost"
    )
    $ErrorActionPreference = "Stop"
    Test-Connection $ComputerName -Count 1 | Out-Null
    quser /server:$ComputerName 2>&1 | Select-Object -Skip 1 | ForEach-Object {
        $CurrentLine = $_.Trim() -Replace "s+"," " -Split "s"
        $HashProps = @{
            UserName = $CurrentLine[0]
            ComputerName = $ComputerName
        }
        If ($CurrentLine[2] -eq "Disc") {
            $HashProps.SessionName = $null
            $HashProps.Id = $CurrentLine[1]
            $HashProps.State = $CurrentLine[2]
            $HashProps.IdleTime = $CurrentLine[3]
            $HashProps.LogonTime = $CurrentLine[4..6] -join " "
            $HashProps.LogonTime = $CurrentLine[4..($CurrentLine.GetUpperBound(0))] -join " "
        }
        else {
            $HashProps.SessionName = $CurrentLine[1]
            $HashProps.Id = $CurrentLine[2]
            $HashProps.State = $CurrentLine[3]
            $HashProps.IdleTime = $CurrentLine[4]
            $HashProps.LogonTime = $CurrentLine[5..($CurrentLine.GetUpperBound(0))] -join " "
        }
        New-Object -TypeName PSCustomObject -Property $HashProps |
        Select-Object -Property UserName, ComputerName, SessionName, Id, State, IdleTime, LogonTime
    }
}

$UserLogin = Read-Host -Prompt "Введите логин пользователя"
Write-Host "Поиск RDP-сессий пользователя на серверах..."
$SessionList = @()
ForEach ($Server in $Servers) {
    $TargetSession = $null
    Write-Host "  Опрос сервера $Server"
    Try {
        $TargetSession = Get-LoggedOnUser -ComputerName $Server | Where-Object {$_.UserName -eq $UserLogin}
    }
    Catch {
        Write-Host "Ошибка: " $Error[0].Exception.Message -ForegroundColor Red
        Continue
    }
    If ($TargetSession) {
        Write-Host "    Найдена сессия с ID $($TargetSession.ID) на сервере $Server" -ForegroundColor Yellow
        Write-Host "    Что будем делать?"
        Write-Host "      1 - подключиться к сессии"
        Write-Host "      2 - завершить сессию"
        Write-Host "      0 - ничего"
        $Action = Read-Host -Prompt "Введите действие"
        If ($Action -eq "1") {
            Invoke-RDPShadowSession -ComputerName $Server -SessionID $TargetSession.ID
        }
        ElseIf ($Action -eq "2") {
            Invoke-RDPSessionLogoff -ComputerName $Server -SessionID $TargetSession.ID
        }
        Break
    }
    Else {
        Write-Host "    сессий не найдено"
    }
}

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

RDSManagement.cmd

@ECHO OFF
powershell -NoLogo -ExecutionPolicy Bypass -File "%~d0%~p0%~n0.ps1" %*

Кладем оба файла в папку, которая будет доступна «управленцам» и просим их перелогиниться. Теперь, запустив cmd-файл, они смогут подключаться к сессиям других пользователей в режиме RDS Shadow и принудительно их разлогинивать (бывает полезно, когда пользователь не может самостоятельно завершить «зависшую» сессию).

Выглядит это примерно так:

Для «управленца»

Для пользователя

Несколько замечаний напоследок

Нюанс 1. Если сеанс пользователя, к которому пытаемся получить управление, был запущен до того, как на сервере отработал скрипт Set-RDSPermissions.ps1, то «управленец» получит ошибку доступа. Решение здесь очевидно: подождать, пока управляемый пользователь перелогинится.

Нюанс 2. После нескольких дней работы с RDP Shadow заметили интересный то ли баг, то ли фичу: после завершения теневого сеанса у пользователя, к которому подключались, пропадает языковая панель в трее и чтобы ее вернуть, пользователю нужно перелогиниться. Как оказалось, мы не одиноки: раз, два, три.

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

Источники

  • RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 / 2012 R2
  • Windows Server 2012 Shadowing – Delegating Rights To Non-Admins
  • Get-LoggedOnUser Gathers information of logged on users on remote systems
  • The best way how to start PowerShell PS1 scripts
  • Добавляем доменных пользователей в локальную группу безопасности
  • GPMC – Force gpupdate on all computers in OU

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

Чем пользуетесь?


3.37%
Quick Assist / Windows Remote Assistance
3

Проголосовали 89 пользователей.

Воздержались 25 пользователей.

Главная » Видео » Как подключиться в режиме теневой копии WIndows Server 2012/2016 если поднят Active Directory

Удаленное управление сеансом пользователя windows server. Удаленное управление пользовательским сеансом Windows — используем стандартные средства. Как разрешить обычном пользователям использовать теневое подключение

Кроме того, у режима RD Shadow и rdp клиента появился ряд новых интересных возможностей. Полный список опций rdp клиента mstsc.exe, определяющих возможность удаленного подключения к сессии конечного пользователя:

/shadow:ID — подключится к терминальной сессии с указанным ID

/v:servername — имя терминального сервера (если не задано, используется текущий)

/control — возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt — не запрашивать у пользователя подтверждение на подключение к сессии

Ограничения теневых сеансов RDS в Windows 2012 R2

  • Подключаться к чужим сессиям может только администратор сервера. Делегировать эти права обычным пользователем нельзя
  • RDS Shadow не будет работать в сетях на базе рабочих групп

Установка служб RDP

(установка служб удаленных рабочих столов)

В «Диспетчере серверов» выберите «Управление» и «Добавить роли и компоненты«:

На первым шаге «Мастера добавления ролей и компонентов» и нажимаем «Далее«:

На втором шаге выбираем «Установка служб удалённых рабочих столов«:

В следующем шаге мастер попросит Вас выбрать тип развертывания. Выберите «Стандартное развертывание» и нажимаем «Далее«:

Выберите сценарий «Развертывание рабочих столов на основе сеансов» и “Далее”:

Нажмите «Далее«:

Здесь нужно выбрать сервер «Посредник подключений к удалённому рабочему столу«, выбираем сервер в «Пуле серверов» и нажимаем «Далее«.

На этом этапе выберите сервер из списка «Пул серверов» и нажмите «Далее«:

Укажите сервер «Узла сеансов удалённых рабочих столов» выбрав сервер из списка “Пул серверов” и нажмите “Далее”:

Поставте галочки напротив пункта “Автоматически перезапускать конечный сервер, если это потребуется” и нажмите «Развернуть«:

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

Дождитесь окончания настройки и нажмите “Закрыть”:

На этом установка «Службы удалённых рабочих столов» окончена.

⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов

Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:

  • Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
  • Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.

Abusing the Shadow Registry Key and the NoConsentPrompt Parameter

I haven’t mentioned the Shadow registry key yet, because it doesn’t exist by default.

The Shadow key doesn’t exist by default

In this case the behavior is the same as when the key value is set to 1 (described below). In other words, a shadowee must explicitly give permission to allow their session to be shadowed.

To be able to shadow it without permission, you must intentionally override this with a group policy, for example, using GUI application called Local Group Policy Editor ( gpedit.msc ) set the Set rules for remote control of Remote Desktop Services user sessions policy value to allow session shadowing without user permission. It is located at Local Computer Policy → Computer Configuration → Administrative Templates → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Connections.

The policy setting window of the Local Group Policy Editor management console

It can also be set manually with a command line interpreter by issuing the following command:

where the value of the /d parameter is one of the following:

  • 0 – No remote control allowed;
  • 1 – Full Control with user’s permission;
  • 2 – Full Control without user’s permission;
  • 3 – View Session with user’s permission;
  • 4 – View Session without user’s permission.

Selecting the Not Configured value or the Disabled value deletes the Shadow registry key.

Full Control also allows to connect in the View Session mode, but to avoid a situation with the mistakenly specified /control parameter it is safer to set the Shadow value to 4.

Note: to get the current value of the Shadow key issue the following:

to remove the Shadow key type

Defining the Shadow parameter on the remote host, it is possible to shadow a session without a user’s consent as follows:

  • /v parameter lets specify the value that is an IP address or a hostname of a remote host;
  • /shadow parameter is used to specify the value that is a shadowee’s session ID;
  • /noconsentprompt parameter allows to bypass a shadowee’s permission and shadow their session without their consent;
  • /prompt parameter is used to specify a user’s credentials to connect to a remote host.

Another way to specify user’s credentials without having to constantly type them in the pop-up window is to use the runas command as follows:

and in the new command line interpetator window run the mstsc utility

The same works for qwinsta and quser .

Sometimes you can face the following general error:

which can mean anything, but in some cases it may mean that

  • the user in whose context the current command is issued doesn’t exist on a remote host;
  • the specified user credentials are incorrect;
  • you are trying to shadow a session to which you don’t have permissions.

This behavior is pretty much the same for qwinsta :

In a workgroup environment you can use any of the local accounts if this account is also present on a remote host.

Moreover, if you are trying to shadow a session (or list sessions using qwinsta or quser ) with an unprivileged user account on a remote host, then you are able to connect only to the session (to list only information about a session) related to this user.

You will get the same behavior if you’re using a non-RID 500 administrator account, but UAC remote restrictions are enabled on the remote host, more precisely it means that the LocalAccountTokenFilterPolicy registry key is set to 0 or the key doesn’t exist (by default).

In the first screenshot UAC remote restrictions are enabled and in the second one they are disabled

The qwinsta command output while UAC remote restrictions are enabled The qwinsta command output while UAC remote restrictions are disabled

This is a well-known security mechanism that strips out the administrator access token when a user is connected remotely. More details are at https://docs.microsoft.com/en-us/troubleshoot/windows-server/windows-security/user-account-control-and-remote-restriction.

To disable it change the value to 1 with the following command:

Note: to get the current value of the LocalAccountTokenFilterPolicy key, issue the following:

to remove the LocalAccountTokenFilterPolicy key type

It’s important that if you are lucky and the built-in RID 500 administrator account is enabled (by default it is disabled) on the remote host you are able to shadow a session using it since the LocalAccountTokenFilterPolicy key doesn’t affect it. There is another FilterAdministratorToken registry key that might restrict this account if it is set to 1, but by default it is set to 0.

So, in a workgroup (as well as in a domain) environment a local administrator is the only local user that can access other local user’s sessions (if the LocalAccountTokenFilterPolicy and the FilterAdministratorToken registry keys are set to the appropriate values).

In a domain environment any domain administrator is able to shadow sessions of both local and domain users.

I don’t know when it might be useful, but it is possible to enumerate the existence of a session using mstsc itself by simply incrementing the value

If there is no such session, then the following error occurs:

The session you’re trying to connect to doesn’t exist

Alternatively, if a session exists, but nobody is connected to it or you have no necessary permissions you get one of the following errors:

The session exists, but nobody is connected to it Not enough permissions to shadow a session

Otherwise, you are granted permissions and a viewer’s window is opened

A successfully established shadowing connection

Теневое подключение 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

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

query session /server:%rcomp%
set /P rid=»Enter RDP user ID: «

Можно поместить данный файл в каталог %Windir%System32, в результате для теневого подключения достаточно выполнить команду shadow .

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

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

Использование Remote Desktop Shadow из графического GUI

коллекция QuickSessionCollection

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection

shadow - запуск теневой сесии

Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).

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

mstsc - Теневая копия - Запрашивать согласие пользователя

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

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

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

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

удаленное управление терминальной сесией пользователя в rds windows server 2012r2

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

Если же пользователь отклонит подключение, появится окно:Shadow Error: The operator or administrator has refused the request

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.

ошибка GPO удаленного shadow подключения

Параметры удаленного управлениями 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 в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal 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 сессиям в Windows

Параметры для удаленного управления сеансами RDS пользователя настраиваются с помощью отдельного параметра групповой политики «Установить правила для управления сеансом пользователя служб удаленных рабочих столов». Этот параметр находится в разделе «Политики» -> «Административные шаблоны» -> «Компоненты Windows» -> «Службы удаленных рабочих столов» -> «Узел удаленного сеанса» -> «Подключения» в разделах «Пользователь» и «Компьютер» объекта групповой политики. Эта политика соответствует параметру DWORD теневого реестра в ветке HKLM SOFTWARE Policies Microsoft Windows NT Terminal Services (в скобках указаны значения этого параметра, соответствующие параметрам политики).

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

    Дистанционное управление запрещено – дистанционное управление запрещено (значение регистрового параметра

policy Установить правила удаленного управления для пользовательских сеансов RDS

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

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

, используя рассматриваемый параметр политики, или групповую политику, которая вносит изменения непосредственно в реестр (последний вариант позволяет более точно настроить таргетинг политики на компьютеры с помощью Group Таргетинг на уровень элемента политики).

Эксплуатация

Те­перь я покажу, как выг­лядит сама экс­плу­ата­ция.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Содержание

  1. Хочу Знать
  2. Как подключиться в режиме теневой копии WIndows Server 2012/2016 если поднят Active Directory
  3. Режим Shadow
  4. Установка служб RDP
  5. Коллекция сеансов
  6. Подключение к сеансу
  7. Теневое RDP подключение к рабочему столу пользователя в Windows 10
  8. Настройка Remote Assistance удаленный помощник на терминальном RDS RDP сервере Windows Server 2016 в домене
  9. RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 9 / 2012 R2 Windows 8, 10
  10. Настройка Remote Assistance удаленный помощник на терминальном RDS RDP сервере Windows Server 2016 в домене : 1 комментарий

Хочу Знать

В 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]]
novye parametry mstsc v windows 8 1

/shadow:ID – подключится к RDP сессии с указанным ID.

/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).

/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.

Ограничения теневых сеансов RDS в Windows 2012 R2

Использование Remote Desktop Shadow из графического GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
kollekciya quicksessioncollection

Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
shadow zapusk tenevoj sesii

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

mstsc tenevaya kopiya zaprashivat soglasie polz

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

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

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

Winitproadministrator is requesting to view your session remotely. Do you accept the request?

zapros polzovatelya o shadow podklyuchenii

zapros na udalennoe tenevoe nablyudenie

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

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

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

Shadow Error: The operator or administrator has refused the request

the operator or administrator has refused the requ

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:

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

oshibka gpo udalennogo shadow podklyucheniya

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

politika ustanovit pravila udalennogo upravleniya

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

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

В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):

get rdusersession powershell

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:

Mstsc /shadow:3 /control

mstsc zapusk shadow iz powershell
Также для получения списка всех сессии на сервере можно выполнить команду

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

qwinsta spisok rdp sesiij na udalennom servere

Для получения списка сессий на удалённом сервере выполните команду:

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:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,2

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2012 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2016.

Для решения проблемы нужно установить отдельные обновления:

Источник

Как подключиться в режиме теневой копии WIndows Server 2012/2016 если поднят Active Directory

Режим Shadow

Режим Shadow (теневой сеанс) – может использоваться администратором для просмотра и управления активной терминальной сессией любого пользователя.

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Диспетчера серверов.

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

Для установки службы удалённых рабочих столов необходимо, чтобы Ваш VPS под управлением Windows Server 2012 / 2016 был введен в домен.

В данной инструкции сервер уже состоит в домене NEOCOMMS.RU

Установка служб RDP

(установка служб удаленных рабочих столов)

В «Диспетчере серверов» выберите «Управление» и «Добавить роли и компоненты«:

1

На первым шаге «Мастера добавления ролей и компонентов» и нажимаем «Далее«:

2

На втором шаге выбираем «Установка служб удалённых рабочих столов«:

3

В следующем шаге мастер попросит Вас выбрать тип развертывания. Выберите «Стандартное развертывание» и нажимаем «Далее«:

4

Выберите сценарий «Развертывание рабочих столов на основе сеансов» и “Далее”:

5

Нажмите «Далее«:

6

Здесь нужно выбрать сервер «Посредник подключений к удалённому рабочему столу«, выбираем сервер в «Пуле серверов» и нажимаем «Далее«.

7

На этом этапе выберите сервер из списка «Пул серверов» и нажмите «Далее«:

8

Укажите сервер «Узла сеансов удалённых рабочих столов» выбрав сервер из списка “Пул серверов” и нажмите “Далее”:

9

Поставте галочки напротив пункта “Автоматически перезапускать конечный сервер, если это потребуется” и нажмите «Развернуть«:

10

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

Дождитесь окончания настройки и нажмите “Закрыть”:

11

На этом установка «Службы удалённых рабочих столов» окончена.

Коллекция сеансов

Теперь создадим коллекцию сеансов.

В разделе “Общие сведения”, выберите пункт “Создание коллекций сеансов”:

12

На первом шаге мастера нажмите «Далее«:

13

Задайте имя коллекции и нажмите «Далее«:

14

Укажите сервер “Узлов сеансов удалённых рабочих столов” из списка “Пул серверов” для добавления в коллекцию и нажмите «Далее«:

15

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

В данном примере доступ к этой коллекции сеансов имеют все пользователи домена.

После чего нажмите «Далее«:

16

17

На этом шаге нажмите «Создать«:

18

После успешного создания, нажмите «Закрыть«:

19

20

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

Подключение к сеансу

В данной инструкции её название «Моя коллекция«:

21

В списке «Подключения» выберите пользователя за которым вы хотите наблюдать или управлять,
кликните на нём правой кнопкой мыши и нажмите «Теневая копия«:

22

В открывшемся окне выберите нужное Вам действие «Просмотреть» или «Управление«:

23

Далее увидите следующее сообщение:

24

В этот момент на экране пользователя vasya всплывет окно запроса на удаленное наблюдение:

25

У нас появится доступ, как только пользователь vasya примет запрос.

Чтобы подключаться без запроса, необходимо изменить параметры удалённого управления конкретного пользователя, в данном примере это vasya.

Кликните дважды по имени пользователя и выберите вкладку «Удалённое управление».

В параметре «Запрашивать разрешение пользователя» снимите галочку и выберите желаемый уровень управления сеансом пользователя.

26

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

Источник

Теневое 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. Формат команды такой:

Также можно использовать одну из опций:

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

politika ustanovit pravila udalennogo upravleniya

Вместо включения политики можно выставить значение dword ключа с именем Shadow в ветке реестра HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services. Допустимые значения:

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

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

vklyuchit rdp dostup k windows 10

Запросим удаленно список сессий на рабочей станции Windows 10 командой:

qwinsta /server:192.168.11.60
qwinsta zapros sessij na udalennom kompyutere

Как вы видите, на данном компьютере имеется одна консольная сессия пользователя с идентификатором >

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

Mstsc /shadow:1 /v:192.168.11.60

tenevoe rdp podklyuchenie k windows 10

На экране пользователя Windows 10 появится запрос:

zapros na udalennoe podklyuchenie

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

prosmot rabochego stola polzvoatelya

Если проверить сетевые соединения с помощью TCPView, можно увидеть, что взаимодействие идет через RemoteRPC (а не по протоколу RDP с портом TCP 3389). Т.е. для подключения используется случайный TCP порт из высокого диапазона RPC. На стороне подключающегося компьютера соединение устанавливает mstsc.exe, на стороне клиента подключение обрабатывает rdpsa.exe или rdpsaproxy.exe (в зависимости от билда Windows 10). Поэтому на клиенте должен быть включен RemoteRPC:

tcpview shadow session win 10

Функционал теневого подключения 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 для локальной или корпоративной сети.

Источник

Настройка Remote Assistance удаленный помощник на терминальном RDS RDP сервере Windows Server 2016 в домене

Как обеспечить удаленное управление в RDP сессиях на терминальном сервере Windows Server 2012R2 /2016/2019 в доменной сети

1)В консоли ADUC и выберем пользователя, которому будет разрешено подключение к сессиям. Создаём группу TS-RDP-RemoteAssistance

ts rdp Remote Assistance 01

2)На терминальном сервер RDP RDS устанавливаем Features — Remote Assistance (Возможности — Удаленный помощник)

ts rdp Remote Assistance add roles and Features 02

3)После успешной установки, нам нужно настроить несколько локальных политик на сервере.
Очевидно, что если количество терминальных серверов достаточно большое, настройку политик лучше производить в консоли Group Policy Object Editor GPO.
Если один терминальный сервер, как в моем примере, то достаточно редактора локальных групповых политик.

ts rdp Remote Assistance gpedit 03

4)Computer ConfigurationAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostConnections — Allow users to connect remotely by using Remote Desktop Services (Enabled)
Computer ConfigurationAdministrative TemplatesWindows ComponentsRemote Desktop ServicesRemote Desktop Session HostConnections — Set rules for remote control of Remote Desktop Services user sessions (Enabled)

Конфигурация компьютера Административные шаблоны Компоненты Windows Службы удаленных рабочих столов Узел сеансов удаленных рабочих столов Соединения
Разрешить пользователям удаленно подключаться с помощью служб удаленных рабочих столов

Конфигурация компьютера Административные шаблоны Компоненты Windows Службы удаленных рабочих столов Узел сеансов удаленных рабочих столов Соединения — Установить правила для дистанционного управления сеансами пользователей Remote Desktop Services

5)Computer ConfigurationAdministrative TemplatesSystemRemote Assistance — Configure Offer Remote Assistance (Enabled)
Конфигурация компьютера Административные шаблоны Система Удаленный помощник — Настройка удаленного доступа к службе (включено)

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).

ts rdp Remote Assistance gpedit 04

6)Включаем политику, разрешаем удаленное управление.
Нажимаем кнопку «Show«, здесь мы добавляем пользователей или группы домена, которым будет разрешено подключаться без приглашения.

ts rdp Remote Assistance gpedit 05

7)Computer ConfigurationAdministrative TemplatesSystemRemote Assistance — Configure Solicited Remote Assistance (Enabled)

Этой политикой включается возможность отправки приглашений пользователями.
Так же включаем политику, разрешаем удаленное управление, выбираем способ доставки и время действия.
На этом настройка завершена. После настройки политик необходимо выполнить gpupdate /force или перезагрузить сервер.

ts rdp Remote Assistance gpedit 06

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

ts rdp Remote Assistance client msra offerRA 07

msra /offerRA MSK01-RDP01.5house.win

9)После того, как пользователь дает разрешение на подключение к сессии и управление, все в Ваших руках!

ts rdp Remote Assistance client ask yes no 09

ts rdp Remote Assistance remoteControl 08

ts rdp Remote Assistance hostname ip 10

RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 9 / 2012 R2
Windows 8, 10

Использование Remote Desktop Shadow из графического GUI
Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection [Создадим коллекцию со списком подключения через powershell
New-RDSessionCollection –CollectionName SessionCollection –SessionHost MSK01-RDS.5house.win –CollectionDescription “This Collection is for Desktop Sessions” –ConnectionBroker MSK01-RDS.5house.win]
Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).
Появится окно параметров теневого подключения. Возможен просмотр (View) и управление (Control) сессией. Кроме того, можно включить опцию Prompt for user consent (Запрашивать согласие пользователя на подключение к сессии).

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

Если вы оказываете помощь
Щелкните правой кнопкой мыши по значку меню “Пуск”.
Выберите пункт меню “Найти”.
Введите фразу Быстрая помощь и нажмите Enter.
Выберите ссылку “Оказать помощь”.
Введите имя учетной записи Microsoft.

Нажмите кнопку “Далее”.
Введите пароль.
Нажмите кнопку “Вход”.

windows10 quickassist

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

Если вы получаете помощь
Для получения помощи не нужно регистрировать учетную запись Microsoft
Щелкните правой кнопкой мыши по значку меню “Пуск”.
Выберите пункт меню “Найти”.
Введите фразу “Быстрая помощь” и нажмите Enter.
Выберите ссылку “Получить помощь”.

Введите шестизначный код, полученный от лица, оказывающего помощь.
Нажмите кнопку “Отправить”.

quick assist enter code

Нажмите кнопку “Разрешить”, если имя учетной записи соответствует лицу, оказывающему помощь.

Со своей стороны, пользователь к которому подключились, может либо поставить сеанс «помощи» на паузу, либо закрыть приложение, если вдруг потребовалось резко прервать сеанс удаленного управления компьютером.
Среди незаметных возможностей — передача файлов на удаленный компьютер и с него: для этого просто скопируйте файл в одном расположении, например, на своём компьютере (Ctrl+C) и вставьте (Ctrl+V) в другом, например, на удаленном компьютере.

windows10 Features list qa

Настройка Remote Assistance удаленный помощник на терминальном RDS RDP сервере Windows Server 2016 в домене : 1 комментарий

Источник

Теневое подключение к сеансам RDP / RDS позволяет администраторам подключаться к любому сеансу пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим теневого копирования удаленного рабочего стола работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (за исключением Windows Server 2012, в которой стек rdp переместился из режима ядра в режим пользователя). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к пользовательским сеансам RDP в Windows Server 2016 и Windows 10

В Windows Server 2016 / Windows 10 в стандартном клиенте RDP (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого подключения (RDS Shadow) к сеансу RDP любого пользователя:

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

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

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

Теневые сеансы можно использовать для подключения к пользовательским сеансам на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, необязательно иметь права администратора на хосте RDS, на котором работает пользователь. Администраторы могут делегировать полномочия теневого копирования RDS кому угодно, даже не административным учетным записям (подробнее см. Ниже).

Использование Remote Desktop Shadow из графического GUI

вы можете подключиться к пользовательскому сеансу с помощью утилиты mstsc.exe или графической консоли Server Manager. Для этого в консоли Server Manager на сервере RDS перейдите в раздел Remote Desktop Services -> выберите свою коллекцию, например QuickSessionCollection.

коллекция QuickSessionCollection

Список справа будет содержать список пользователей, у которых есть сеансы на этом сервере RDS. Щелкните правой кнопкой мыши сеанс, который нужен пользователю, выберите «Тень» в контекстном меню).

shadow - запустить теневую сессию

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

Ошибка тени - указанный сеанс не подключен.

теневая ошибка подключения Указанная сессия не подключена

Появится окно с параметрами теневого подключения. Вы можете просматривать (Просмотр) и управлять (Управлять) сеансом. В качестве альтернативы вы можете включить опцию Требовать согласия пользователя).

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

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

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

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

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

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

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

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

Если пользователь отказался от административного подключения Shadow RDS, появится окно:

Теневая ошибка: оператор или администратор отклонил запрос.

ошибка тени rds пользователь отклонил теневое соединение

В современных версиях Windows графическая оснастка tsadmin.msc из Windows Server 2008 R2 не может использоваться для теневых подключений к сеансам RDP.

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

Теневая ошибка: параметр групповой политики настроен на требование согласия пользователя. Проверьте конфигурацию параметров политики.

теневое соединение запрещено групповой политикой

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

  • Событие с кодом 20508: разрешение на просмотр теней предоставлено
  • Событие с кодом 20503: сеанс просмотра теней запущен
  • Событие с кодом 20504: сеанс теневого просмотра остановлен

получите журналы теневых подключений rds из журнала событий Microsoft-Windows-TerminalServices-RemoteConnectionManager

Параметры для удаленного управления сеансами RDS пользователя настраиваются с помощью отдельного параметра групповой политики «Установить правила для управления сеансом пользователя служб удаленных рабочих столов». Этот параметр находится в разделе «Политики» -> «Административные шаблоны» -> «Компоненты Windows» -> «Службы удаленных рабочих столов» -> «Узел удаленного сеанса» -> «Подключения» в разделах «Пользователь» и «Компьютер» объекта групповой политики. Эта политика соответствует параметру DWORD теневого реестра в ветке HKLM SOFTWARE Policies Microsoft Windows NT Terminal Services (в скобках указаны значения этого параметра, соответствующие параметрам политики).

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

  • Дистанционное управление запрещено – дистанционное управление запрещено (значение регистрового параметра

    Shadow = 0

    );

  • Полный контроль с разрешения пользователя – полный контроль над сеансом с разрешения пользователя (

    1

    );

  • Полный контроль без разрешения пользователя – полный контроль без разрешения пользователя (

    2

    );

  • Просмотр сеанса с авторизацией пользователя – сеанс мониторинга с авторизацией пользователя (

    3

    );

  • Просмотр сеанса без авторизации пользователя – мониторинг сеанса без авторизации пользователя (

    4

    ).

policy Установить правила удаленного управления для пользовательских сеансов RDS

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

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

gpmc.msc

, используя рассматриваемый параметр политики, или групповую политику, которая вносит изменения непосредственно в реестр (последний вариант позволяет более точно настроить таргетинг политики на компьютеры с помощью Group Таргетинг на уровень элемента политики).

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

вы также можете использовать функцию теневого подключения к пользовательскому сеансу через теневое подключение к службам удаленных рабочих столов из Powershell.

Прежде всего, вам необходимо получить список пользовательских сессий на RDS-сервере терминала (пользовательские сессии будут сгруппированы по их статусу):

Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate

Get-RDUserSession Powershell

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

Mstsc /shadow:3 /control /noConsentPrompt

mstsc shadow control noConsentPrompt будет подключаться к пользовательскому сеансу из cmd

Кроме того, чтобы получить список всех сеансов RDP на сервере (или в настольной версии Windows 10, в которой разрешено несколько подключений RDP), вы можете использовать команду:

quser

ИЛИ

qwinsta

На экране отобразится список сеансов RDP, их идентификаторы и статус: сеанс активен (Активен) или отключен (Отключен).

qwinsta - список RDP сессий на удаленном сервере

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

query session /server:servername

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

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

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

shadow.bat

@eco выкл
set / P rcomp = "Введите имя или IP-адрес удаленного ПК: "
сеанс запроса / сервер:% rcomp%
set / P rid = "Введите идентификатор пользователя RDP: "
запустить mstsc / shadow:% rid% / v:% rcomp% / control

Вы можете поместить этот файл в каталог% Windir% System32. Поэтому для теневого подключения к пользователю достаточно запустить теневую команду.

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

@eco выкл
set / P rcomp = "Введите имя или IP-адрес удаленного ПК: "
for / f "tokens = 3 delims =" %% G in ('query session console / server:% rcomp%') установить rid = %% G
запустить mstsc / shadow:% rid% / v:% rcomp% / control

Вы также можете использовать следующий сценарий PowerShell с простым графическим интерфейсом (rdp_shadow_connection.ps1) для теневого подключения):

Добавить тип -assembly System.Windows.Forms
$ Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$ dlgForm = Новый объект System.Windows.Forms.Form
$ dlgForm.Text = 'Сессионное соединение'
$ dlgForm.Width = 400
$ dlgForm.AutoSize = $ true
$ dlgBttn = Новый объект System.Windows.Forms.Button
$ dlgBttn.Text = 'Контроль'
$ dlgBttn.Location = Новый объект System.Drawing.Point (15,10)
$ dlgForm.Controls.Add ($ dlgBttn)
$ dlgList = Новый объект System.Windows.Forms.ListView
$ dlgList.Location = Новый объект System.Drawing.Point (0.50)
$ dlgList.Width = $ dlgForm.ClientRectangle.Width
$ dlgList.Height = $ dlgForm.ClientRectangle.Height
$ dlgList.Anchor = "Сверху, слева, справа, снизу"
$ dlgList.MultiSelect = $ False
$ dlgList.View = 'Подробности'
$ dlgList.FullRowSelect = 1;
$ dlgList.GridLines = 1
$ dlgList.Scrollable = 1
$ dlgForm.Controls.add ($ dlgList)
# Добавить столбцы в ListView
foreach (столбец $ в заголовке){
$ dlgList.Columns.Add ($ column) | Out-Null
}
$ (qwinsta.exe | findstr "Active") -replace "^ [ s>]", "" -replace " s +", "," | ConvertFrom-Csv -Header $ Header | ForEach-Object {
$ dlgListItem = новый объект System.Windows.Forms.ListViewItem ($ _. SESSIONNAME)
$ dlgListItem.Subitems.Add ($ _. USERNAME) | Out-Null
$ dlgListItem.Subitems.Add ($ _. ID) | Out-Null
$ dlgListItem.Subitems.Add ($ _. STATUS) | Out-Null
$ dlgList.Items.Add ($ dlgListItem) | Out-Null
}
$ dlgBttn.Add_Click(
{
$ SelectedItem = $ dlgList.SelectedItems [0]
if ($ SelectedItem -eq $ null){
[System.Windows.Forms.MessageBox] :: Show («Выберите сеанс для подключения")
} Другие{
$ session_id = $ SelectedItem.subitems [2] .text
$ (mstsc / shadow: $ идентификатор_сеанса / элемент управления)
# [System.Windows.Forms.MessageBox] :: Show ($ session_id)
}
}
)
$ dlgForm.ShowDialog()

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

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

Чтобы запускать сценарии PowerShell (Ps1) на вашем компьютере, вам необходимо настроить политику выполнения PowerShell.

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

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

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

Например, вы хотите разрешить членам группы домена AllowRDSShadow использовать теневое подключение к сеансам RDP. Выполните команду в cmd.exe с правами администратора:

@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

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи обнаружили, что теневой доступ перестал работать в Windows Server 2012 R2. При попытке установить теневое соединение с другим сеансом отображается сообщение «Неопознанная ошибка» (в журналах есть ошибка

@echo off
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 на базе Windows Server 2016.

Чтобы это исправить, вам необходимо установить отдельные обновления:

  • для Windows Server 2016 – KB4057142 (17 января 2018 г)
  • для Windows Server 2012 R2 – KB4057401 (17 января 2018 г)

Источник изображения: winitpro.ru

Rds shadow теневое подключение к rdp сессиям

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали установку Hyper-V в Windows 11. Сегодня я хочу с вами разобрать тему удобной поддержки пользователей встроенными средствами Windows. Речь пойдет, о теневом подключении RDP или Remote Desktop Shadowing. Мы рассмотрим, как она реализована, как предоставляются права и многое другое. Статья получиться большой, но поверьте оно того стоит. Благодаря этому вы сможете сэкономить бюджеты компании, отказавшись от стороннего ПО.

💻 Что такое теневой сеанс Remote Desktop Shadowing?

Все мы прекрасно помним 2020 год, когда массово вводились ограничения и все пользователи переходили на дистанционное положение. Это заставило все компании организовать для сотрудников рабочее окружение, и самое главное это отслеживание и предоставление удаленной помощи, при возникших проблемах. Для удаленной помощи используется много различного программного обеспечения, например teamviewer, VNC, Dameware и многое другое, большая проблема в том, что все они платные для коммерческого использования. Не все компании готовы платить за это деньги, но в Windows есть и встроенная возможность, о которой многие просто не знают.

Режим Shadow (теневой сеанс RDP/RDS) — Это встроенное средство, позволяющее системным администраторам производить подключение в RDP сессию любого пользователя, видя его экран, имея возможность производить любые манипуляции курсором и сеансом, одним словом полное взаимодействие. Remote Desktop Shadowing идет в составе начиная с Windows 8.1, Windows Server 2012 R2 и выше.

Теневое копирование служб удаленных рабочих столов имеет как графический интерфейс, так и утилиту командной строки. Есть две версии функции. Так как устаревшая версия Remote Desktop Services Shadowing несовместима с последней версией утилиты, то я не буду подробно описывать предыдущую версию, а лишь упомяну несколько слов в качестве исторической справки. В более ранних версиях Windows файл shadow.exe позволял пользователю подключаться к удаленному узлу с помощью метода теневого копирования служб удаленных рабочих столов. Короче говоря, это предшественник утилиты mstsc и ее параметра /shadow. Он был представлен в Windows Server 2003 и доступен во многих версиях Windows.

Кроме того, есть два приложения с графическим интерфейсом, и они делают одно и то же: управление службами терминалов (TSAdmin), которое присутствует с Windows Server 2003, и диспетчер служб удаленных рабочих столов (RDSM), который является частью инструментов удаленного администрирования сервера (RSAT) и заменяет TSAdmin в Windows Server 2012.

Ключевое различие между версиями RDS Shadowing заключается в том, что в устаревшей версии вы должны сначала установить соединение RDP, чтобы получить сеанс на удаленном хосте, прежде чем вы сможете затенить чей-либо еще сеанс на этом хосте. В последней версии вы можете затенить сеанс пользователя на удаленном хосте с консоли вашего собственного хоста. В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2022 и Windows 11.

⚙️ Какие порты использует теневое копирование служб удаленных рабочих столов

Функция теневого копирования служб удаленных рабочих столов не использует порт 3389/TCP (RDP), вместо этого он использует порт 445/TCP (SMB) и эфемерные порты, также известные как динамический диапазон портов (RPC). Так же на удаленном компьютере, куда вы будите производить подключения должны быть добавлены правила:

  • Первое правило называется «File and Printer Sharing (SMB-In)», которое позволяет подключаться к порту 445/TCP;
  • Второй есть «Remote Desktop — Shadow (TCP-In)». Это позволяет %SystemRoot%system32RdpSa.exe двоичному файлу обрабатывать входящие соединения на любом локальном TCP-порту. Динамический диапазон портов в Windows обычно включает TCP-порты с 49152 по 65535.

Какой уровень прав необходим для использования Remote Desktop Services Shadowing

Для того, чтобы вы могли производить теневое подключение к пользователям RDS фермы или отдельным серверам, вам нужны права администратора на конечных серверах, но и это можно обойти, произведя точечное делегирование прав на функцию shadow, не имея при этом административного доступа на конечных серверах. Как это организовать я покажу, немного ниже.

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

Перед тем, как мы с вами разберем практические методы подключения Remote Desktop Shadow, нам нужно настроить групповую политику, которая будет определять, как оператор, кто будет помогать конечному пользователю, будет с ним взаимодействовать. У системного администратора есть возможность оставить пользователю одобрение подключения или же можно сделать без уведомления, существует пять вариантов политики.

  • No remote control allowed — удаленное управление не разрешено (значение параметра реестра ) — Идет по умолчанию, если политика не задана
  • 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).

Найти данную политику можно по пути:

Она будет иметь название «Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов (Set rules for remote control of Remote Desktop Services user sessions)«

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

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

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

🌐 Подключение Remote Desktop Shadow из графического интерфейса

Данный метод является наверное самым удобным, так как позволяет визуально все видеть, контролировать. Все, что вам нужно это собранная оснастка по управлению RDS фермой в диспетчере серверов, как это делать смотрите по ссылке слева. В качестве тестового пользователя я буду использовать Барбоскина Геннадия Викторовичу (Barboskin.g). Для начала давайте его найдем, для этого в оснастке выберите нужную коллекцию, в области «Подключения» произведите поиск вашего пользователя. После его нахождения кликните по нему правым кликом, в контекстном меню вы увидите пункт «Теневая копия (Shadow)«.

У вас появится дополнительное окно с параметрами теневой копии:

  • Удаленный сеанс — Просмотреть/Управление. Тут либо вы просто наблюдатель, все действия делает сам пользователь или же полный контроль.
  • Запрашивать согласие пользователя

У пользователя на удаленном сервере появится окно «Запрос на удаленное наблюдение. Пользователь запрашивает удаленный просмотр вашего сеанса. Вы принимаете этот запрос? (User is requesting to view your session remotely. Do you accept the request?) «, тут он может подтвердить или отказаться.

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

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

Если пользователь закроет окно RDP подключения, то он перейдет в статус «Отключен (Disconnected)«, то вас выкинет из сессии теневого копирования. Вы увидите:

Второй вариант, которым я могу пользоваться при теневом копировании к пользователю RDP, это использование бесплатного ПО по работе с RDS. Оно называется Terminal Services Manager, о нем я вам делал подробный обзор. Найдите в списке пользователей нужного вам, кликните по нему правым кликом и выберите пункт «Shadow«.

У вас так же появится окно, где вы должны запросить доступ с нужным уровнем, а далее все как описано выше.

🔍 Логирование сессий теневого копирования

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

Вот такая будет последовательность.

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

Напоминаю, что в качестве клиентской ОС у меня установлена Windows 11, а подключаться я буду к сессия пользователя работающего за Windows Server 2022. Для того, чтобы мы могли из PowerShell или командной строки использовать теневое копирование, мы должны вызвать утилиту mstsc.

mstsc — это по сити встроенный RDP клиент в операционной системе Windows. Запустите оболочку PowerShell и введите:

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

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

Перед использованием RDS Shadowing мне нужно выяснить SessionID клиента к которому буду подключаться, как это сделать я уже рассказывал. Я для своего обзора буду использовать камандлет Get-TSSession.

Нужный мне SessionID 517.

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

Если вы запускаете с запросом учетных данных другого пользователя, то появится всплывающее окно с вводом логина и пароля.

У удаленного пользователя работающего по RDP появится всплывающее окно, где он должен подтвердить ваш запрос:

Удобный Bat файл для использования Remote Desktop Services Shadowing в командной строке

Создайте из текстового файла batник, поменяв расширение. И добавьте вот такое содержимое, теперь при его запуске будет выводиться список сеансов и удобный запрос ID.

Как дать права на теневые сеансы не администраторам

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

И так, режим shadow для непривилегированного пользователя в Windows Server организовывается через PowerShell. Вам необходимо имя группы, для которой будут делегированы права и выполнить команду на конечном сервере. Но для начала давайте посмотрим у кого уже есть такие права. Для этого в оболочке PowerShell выполните:

Обратите тут на поле _GENUS — это как раз разрешение. Данная команда вам будет полезна, когда вы добавите группу и проверите, появилась ли она тут. Цифра 2 в конце определяет тип доступа:

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

Далее я дам права для группы ROOTRDP-SHADOW-SESSION, чтобы она могла использовать Remote Desktop Services Shadowing.

Проверим, что они появились

Чтобы удалить права, выполните:

Массовая настройка теневого подключения для не администраторов

Если у вас, как в моей компании RDS ферма состоит из 50 и более RDSH хостов, то чтобы вам не ходить по каждому из них, нужно воспользоваться вот таким моим скриптом PowerShell.

# Тут подгружаем файл со списком серверов

foreach ($server in (Get-Content $comps_file))
<
«$(Date) Trying to process server $server»

# wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName =»RDP-Tcp») CALL AddAccount ,2

$rds = Get-WmiObject -Namespace root/cimv2/terminalservices -Class Win32_TSPermissionsSetting -Filter «TerminalName = ‘RDP-Tcp’» -ComputerName $server
$status = $rds.AddAccount(«ROOTRDP-SHADOW-SESSION«,2)

if ($status.ReturnValue -eq 0)
<
«$(Date) All good»
>
else
<
«$(Date) Something went wrong»
>
>

Устранение непредвиденной ошибки

В Windows Server 2012R2-2016 вы можете получить ошибку «Неопознанная ошибка или Произошла внутренняя ошибка» при попытке использования функционала shadow. Тут все дело в том, что у вас не установлены обновления от 2018 года.

  • Windows Server 2016 — KB4057142 (от 17 января 2018)
  • Windows Server 2012 R2 — KB4057401 (от 17 января 2018)

Источник

Содержание

  1. Хочу Знать
  2. Утилита для человеческого shadow подключения неадмина к RDP сессиям пользователей в WinServer 2012R2
  3. RDS Shadow – теневое подключение к RDP сеансам пользователей в Windows Server 2016/2019
  4. Использование Remote Desktop Shadow из графического GUI
  5. Групповые политики управления теневыми подключениями к RDS сессиям в Windows
  6. Теневое подключение RDS Shadow из PowerShell
  7. Как разрешить обычном пользователям использовать теневое подключение?
  8. RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 / 2012 R2
  9. Использование Remote Desktop Shadow из графического GUI
  10. Теневое подключение RDS Shadow из PowerShell
  11. Как разрешить обычном пользователям использовать теневое подключение
  12. Видео

Хочу Знать

В 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]]
В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

/shadow:ID – подключится к RDP сессии с указанным ID.

/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).

/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.

Ограничения теневых сеансов RDS в Windows 2012 R2

Использование Remote Desktop Shadow из графического GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection
В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

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

Winitproadministrator is requesting to view your session remotely. Do you accept the request?

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

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

Shadow Error: The operator or administrator has refused the request

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:

Mstsc /shadow:3 /control

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей
Также для получения списка всех сессии на сервере можно выполнить команду

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Для получения списка сессий на удалённом сервере выполните команду:

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:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,2

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2012 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2016.

Для решения проблемы нужно установить отдельные обновления:

Источник

Утилита для человеческого shadow подключения неадмина к RDP сессиям пользователей в WinServer 2012R2

Проблема в период карантинной работы предприятия стала следующей: действительно нужно минимизировать количество посещений кабинетов специалистами, обслуживающими и консультирующими по прикладному ПО, да и сказать откровенно, пользователи частенько злоупотребляют помощью специалистов не желая вникать в сам вопрос, мол «придут — помогут — сделают, а я пока покурю/попью кофе и т.п.». Консультация по телефону при совместном доступе к серверу эффективнее, если просматривать удаленный экран.

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Уже после «изобретения» нашего велосипеда подвернулась вменяемая информация на тему статьи: RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2012 R2 или Режим shadow непривилегированного пользователя в windows server или Делегируем управление RDP-сеансами. Все они подразумевают применение консоли, даже с элементами простого диалога.

Вся изложенная ниже информация предназначена для тех, кто нормально переносит ненормальные извращения для получения нужного результата, изобретая ненужные способы.
Чтобы «не тянуть кота за хвост», начну с последнего: велосипед работает у обычного пользователя с помощью утилиты AdmiLink, за что ее автору и спасибо.

I. Консоль и shadow RDP.

1. Узнаем RDP id сессии:

Причем «| findstr Administrator» было удобно только когда ты знаешь, что именно Administrator тебе нужен, либо использовать только первую часть для лицезрения всех залогинившихся на сервере.

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

2. Подключаемся к этой сессии, при условии что в доменных групповых политиках параметр «Устанавливает правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов» выбран параметр как минимум «Наблюдение за сеансом с разрешения пользователя» (подробнее):

Прошу обратить внимание что в списке будут только логины пользователей.

Повторюсь что без админских прав вы получите следующее:

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Но для предварительной отладки программы, о которой пойдет речь, я использовал учетку с правами администратора.

Итак постановка задачи: создание некого простого графического интерфейса для подключения к теневому сенсу пользователя с его разрешения, отправка сообщения пользователю. Среда программирования выбрана Lazarus.

1. Получаем полный доменный список пользователей «логин» — «полное имя» у админа, либо опять таки через консоль:

никто не запрещает даже так:

Скажу сразу, что именно у Lazarus оказалось проблема с обработкой этого файла, так как по умолчанию его кодировка UCS-2, поэтому пришлось просто преобразовать вручную в обычный UTF-8. В структуре файла много табуляций, вернее множество пробелов, которые было решено все-таки программно обработать, рано или поздно задачка с кодировкой будет решена, и файл будет программно обновляться.

Итак, в задумке папка, доступная для пользователей программы, например c:test, в которой будет 2 файла: первый с login и fullname, второй с id_rdp и login пользователей. Далее эти данные обрабатываем как можем:).

А пока для ассоциирования со списком сессий переносим это (login и fullname) содержимое в массив:

Прошу извинения за «много кода», следующие пункты будут лаконичнее.

2. Аналогично методом из предыдущего пункта считываем результат обработки списка в элемент StringGrid, при этом приведу «значимый» кусок кода:

2.1 Получаем актуальный список RDP сессий в файл:

2.2 Обрабатываем файл (указан только значимые строки кода):

3. Непосредственно само подключение при клике на строку с пользователем и номером его сеанса:

4. Сделано еще пару украшательств типа сортировки по клику на radiobutton, и сообщения пользователю, либо всем пользователям.

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

→ Полный исходный код можно увидеть здесь

III. Применение AdminLink — что я увидел:

Источник

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

Теневое shadow подключение к RDP/RDS сеансам позволяет администраторам подключиться к сессии любого пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим Remote Desktop Shadowing (теневого подключения) работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (кроме версии Windows Server 2012, в которой стек rdp перенесен из режима ядра в пользовательский режим). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к RDP сессиям пользователей в Windows Server 2016 и Windows 10

В Windows Server 2016/Windows 10 в стандартном RDP клиенте (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого (RDS Shadow) подключения к RDP сессии любого пользователя:

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Теневые сеансы можно использовать для подключения к сессиям пользователей на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, не обязательно обладать правами администратора на RDS хосте, на котором работает пользователь. Администраторы могут делегировать полномочия RDS Shadowing любым, даже не-административных учетным записям (об этом ниже).

Использование Remote Desktop Shadow из графического GUI

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Если пользователь отклонил административное Shadow RDS подключение, появится окно:

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что это запрещено групповой политикой:

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Вы можете настроить правила удаленного подключения в домене из консоли gpmc.msc с помощью рассмотренного параметра политики, либо групповой политикой, вносящей изменения напрямую в реестр системы (последний вариант позволяет более тонко нацелить политику на компьютеры с помощью Group Policy Item Level Targeting).

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

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

На данном сервере мы обнаружили три активных RDP сессии пользователей. Чтобы подключиться к сессии пользователя с ID сессии 3, выполните команду:
Mstsc /shadow:3 /control /noConsentPrompt

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Также для получения списка всех RDP сессии на сервере (или десктопной редакции Windows 10 к которой разрешены множественные RDP подключения) можно использовать команду:

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Для получения списка сессий на удалённом сервере выполните команду:

query session /server:servername

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

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

Для более удобного теневого подключения к RDP сессиям пользователей можно использовать следующий скрипт. Скрипт предложит ввести имя удаленного компьютера и выведет список всех пользователей с активными 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.

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

Также для теневого подключения можно использовать следующий PowerShell скрипт с простым графическим интерфейсом (rdp_shadow_connection.ps1):

Данный скрипт отобразить графическую форму со списком активных RDP сеансов на локальном сервере. Вам останется только выбрать учетную запись пользователя и нажать Connect.

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

К примеру, вы хотите разрешить членам доменной группы AllowRDSShadow использовать теневое подключение к RDP сессиям. Выполните команду в cmd.exe с правами администратора:

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,2

Для решения проблемы нужно установить отдельные обновления:

Источник

RDS Shadow – теневое подключение к RDP сессиям пользователей в Windows Server 2016 / 2012 R2

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

/shadow:ID – подключится к RDP сессии с указанным ID.

/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).

/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.

Ограничения теневых сеансов RDS в Windows 2012 R2

Использование Remote Desktop Shadow из графического GUI

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Щелкнув по сессии интересующего пользователя, выберите в контекстном меню Shadow (Теневая копия).

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

Если же пользователь отклонит подключение, появится окно:Shadow Error: The operator or administrator has refused the request

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Если попытаться подключиться к сессии пользователя без запроса подтверждения, появится ошибка, сообщающая, что такое это запрещено групповой политикой:Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

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

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

В первую очередь покажем, как получить список сессий на терминальном сервере (сессии пользователей будут сгруппированы в группы в зависимости от их статуса):

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:
Mstsc /shadow:3 /control
Также для получения списка всех сессии на сервере можно выполнить команду

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

В версии windows установленной на этом сервере не поддерживается теневой доступ пользователей

Для получения списка сессий на удалённом сервере выполните команду:

query session /server:servername

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

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.

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

@echo off
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:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘corpAllowRDSShadow’,2

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2012 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2016.

Для решения проблемы нужно установить отдельные обновления:

Источник

Видео

Ошибки и нюансы при обновление до Windows 10

Ошибки и нюансы при обновление до Windows 10

Как настроить теневой доступ на Windows Server 2016

Как настроить теневой доступ на Windows Server 2016

Это средство не может обновить ваш компьютер

Это средство не может обновить ваш компьютер

Как установить Windows 10, версия 22H2 уже сейчас

Как установить Windows 10, версия 22H2 уже сейчас

Терминальный сервер на Windows 10, разрешаем множественные подключения по RDP

Терминальный сервер на Windows 10, разрешаем множественные подключения по RDP

Версия файла несовместима с версией Windows — решение

Версия файла несовместима с версией Windows - решение

Не удалось установить Windows 10? Устраняем ошибки при обновлении с Windows 7 до Windows 10!

Не удалось установить Windows 10? Устраняем ошибки при обновлении с Windows 7 до Windows 10!

#14. Установка и настройка терминального сервера на Windows Server 2019.

#14. Установка и настройка терминального сервера на Windows Server 2019.

Удаленный рабочий стол RDP. Подробная настройка. Windows 7, 8, 10

Удаленный рабочий стол RDP. Подробная настройка. Windows 7, 8, 10

НУЖНО ЗНАТЬ! 5 ошибок при УСТАНОВКЕ Windows 10, 7

НУЖНО ЗНАТЬ! 5 ошибок при УСТАНОВКЕ Windows 10, 7

Понравилась статья? Поделить с друзьями:
  • Групповые политики в домене windows server 2019
  • Дальнобойщики 2 запуск на windows 10 x64 патч
  • Гудит микрофон в наушниках windows 10
  • Групповые политики в домене windows server 2016
  • Дальнобойщики 2 для windows 10 x64 скачать торрент