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

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

  • автор:

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

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

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

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

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

Так как использование с админскими правами консоли Server Manager -> QuickSessionCollection -> щелкнув по сессии интересующего пользователя, выбрав в контекстном меню Shadow (Теневая копия) для персонала, инструктирующего по работе с ПО, — не вариант, был рассмотрен другой «деревянный» способ, а именно:

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

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

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

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

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

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

II. Программа

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

Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

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 подключения к 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 (отключена по таймауту), подключиться к такой сессии нельзя:

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

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

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

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

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

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

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

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

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

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

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

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

Если вам нужно вести аудит 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 в ветке HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal 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 ).

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

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

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

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

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

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

Войти

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

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

Команды cmd:
Query Session — список сессий
Mstsc.exe /shadow:sessionID /control /noConsentPrompt

Спешим поделиться хорошей новостью: Microsoft вернула функционал Remote Desktop Shadowing в Windows Server 2012 R2 и Windows 8.1! Напомним, что режим Shadow (теневой сеанс) – может использовать администратором для просмотра и управления активной терминальной сессией любого пользователя. Этот режим работы поддерживается практически с первых версий терминального сервера Microsoft и неожиданно был убран в релизе Windows Server 2012 (связано с переносом стека rdp из режима ядра в пользовательский режим).

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

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

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

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

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

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

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

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

Remote Desktop Shadow — работа в GUI

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

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

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

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

Winitpro\administrator is requesting to view your session remotely. Do you accept the request?

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

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

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

Параметры удаленного управлениями терминальными сессиями пользователя настраиваются политиками Set rules for remote control of Remote Desktop Services user sessions, которые находится в разделе Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections в пользовательской и «компьютерной» секциях GPO.

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

  • No remote contol allowed – удаленное управление запрещено
  • Full Control with users’s permission — полный контроль с разрешения пользователя
  • Full Control without users’s permission – полный контроль без разрешения пользователя
  • View Session with users’s permission – наблюдение за сеансом с подтверждением
  • View Session without users’s permission – наблюдение за сеансом без подтверждения

RDS Shadow из Powershell

Воспользоваться функционалом Remote Desktop Services Shadow можно и из Powershell.

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

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

Блокнот ночного сисадмина

Начиная с Windows 8.1/2012 R2 была возвращена функция Remote Desktop Shadowing — теневой сеанс, который позволяет подключаться и управлять сессией пользователя на удалённом компьютере, в том числе незаметно. Установить подключение можно с помощью утилиты «mstsc» со следующими параметрами:

/shadow:ID – подключиться к терминальной сессии с указанным номером ID;
/v:servername – имя удалённого сервера, если не указывать, используется localhost;
/prompt – если не указать, используется текущий пользователь;
/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя);
/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

Чтобы определить нужный ID, воспользуйтесь следующим запросом:
query session /server:servername
Будет выведен список соответствия пользователей и их идентификаторов сеанса.

Кроме того необходимо выполнить следующие предварительные настройки:
1. Пользователь, который подключается с помощью теневого сеанса, должен быть администратором на удалённой машине.
2. Включите удалённый рабочий стол в «Свойства системы«->»Удалённый доступ«.

3. Установите параметр реестра в одно из следующих возможных значений:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services]
«Shadow»=dword:0000000X

где X означает:
0 — удаленное управление не разрешено;
1 — полный контроль с разрешения клиента;
2 — полный контроль без разрешения клиента;
3 — наблюдение за сеансом с разрешения клиента;
4 — наблюдение за сеансом без разрешения клиента.

По умолчанию параметр «Shadow» отсутствует, но при этом предоставляется полный контроль с разрешения клиента.

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

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

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

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

Добавить комментарий

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