Завершение отключенного сеанса rdp windows 10

Когда пользователь со своего компьютера закрывает окно своей RDP/RDS сессии в терминальном клиенте (mstsc.exe, RDCMan или RDP HTML WEB клиенте) простым нажатием по крестику в окне, без выполнения выхода (logoff), его сессия переходит из активного режима в режим disconnected (разъединённый сеанс). В этом режиме все запущенные пользователем программы, открытые документы и окна продолжают работать на удаленном сервере и потреблять ресурсы.

Содержание:

  • Автоматическое завершение неактивных RDP сессий в Windows
  • Сообщения о превышении длительности RDP сессий

По-умолчанию RDP сессия пользователя в Windows может находится в состоянии disconnected до перезагрузки компьютера или явного ее завершения пользователем или администратором. Это довольно удобно, т.к. пользователь может в любой момент подключиться к своей старой сессии и продолжить работу с запущенными программами и открытыми документами.

На следующем скриншоте видно, что отключенные сессии пользователей на RDS сервере с Windows Server 2019 потребляют около 35% памяти сервера.

disconnected сесии не отключаются на rds/rdp сервере

Кроме того незавершенные сессии могут блокировать открытые файлы на файловых серверах, вызывать проблемы с корректным сохранением данных в приложениях, профилях или User Profile Disks. Кроме наличие старых RDP сессий часто вызывает проблему блокировки учетной записи пользователей в домене после смены пароля (когда RDS сессии продолжает работать под старыми паролем пользователя).

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

quser - длительность rdp сеансов, простоя rdp сессий

Также вы можете вывести информацию о длительности сессий пользователей в RDS фермы с помощью PowerShell скрипта (укажите FQDN вашего сервера RDS Connection Broker):

$connectionBrocker = “MSK-RDSMAN.WINITPRO.RU"
Get-RDUserSession -ConnectionBroker $connectionBrocker |select-object -Property CollectionName, HostServer, DomainName, UserName, ServerIPAddress, CreateTime, DisconnectTime,  SessionState, IdleTime , SessionID , `
@{Name='SessionAge ([days.]hours:minutes)';Expression={ ((get-date ) - $_.CreateTime) } }

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

Автоматическое завершение неактивных RDP сессий в Windows

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

Если у вас развернута полноценная Remote Desktop Services ферма на Windows Server, вы можете настроить параметры таймаутов сессий пользователей в настройках RDS коллекций на вкладке Session.

Укажите время, через которое нужно завершить отключенный сеанс в параметре End a disconnected session (по умолчанию длительность RDP сеанса не ограничена – Never). Также вы можете выставить максимальную длительность активной RDP сессии (Active session limit) и отключение бездействующего сеанса (Idle session limit). Это жесткие таймауты применяются для всех сессий в RDS коллекции.

настройка таймаутов сесий и параметров переподключения на rd session host

В Windows Server 2012 R2/2016/2019/22 можно настроить таймауты RDP сессий с помощью групповых политик. Можно использовать как редактор доменных GPO gpmc.msc, так и редактор локальных групповых политик (gpedit.msc) на конкретном RDS сервере ( или на десктопной версии Windows, если вы разрешили к ней множественные RDP подключения).

Параметры таймаутов RDP сессий находятся в разделе GPO Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits (Конфигурация компьютера -> Политики -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничение сеансов по времени). Доступны следующие политики таймаутов:

  • Set time limit for disconnected session (Задать ограничение по времени для отключенных сеансов);
  • Set time limit for active but idle Remote Desktop Services sessions (Задать ограничение времени для активных, но бездействующих сеансов служб удаленных рабочих столов) – политика позволяет завершить простаивающие RDP сессии, в которых отсутствует ввод со стороны пользователя (движение мышкой, ввод символов с клавиатуры);
  • Set time limit for active Remote Desktop Services sessions (Задать ограничение по времени для активных сеансов служб удаленных рабочих столов) – максимальный срок для любой (даже активной) RDP сессии пользователя, после которого она переводится в состояние disconnected;
  • End Session when time limits are reached (Завершать сеанс при достижении ограничения по времени) – через какое время нужно завершать RDS сессию (logoff) вместо перевода ее в disconnected;
  • Set time limit for logoff of RemoteApp sessions (Задать предел для выхода из сеансов RemoteApp).

политики ограничения времени rdp сеансов по времени

По умолчанию эти параметры не настроены. Чтобы автоматически завершать отключенные RDP сеансы пользователей через 8 часов, включите политику “Set time limit for disconnected session” = Enabled, и в выпадающем списке выберите 8 часов.

политика Set time limit for disconnected session

Сохраните изменения и обновите настройки групповых политик в Windows (gpupdate /force). Новые настройки таймаутов будут применяться только к новым RDP сеансам, текущие сеансы придется завершить вручную.

Настройки GPO имеют более высокий приоритет, чем настройки таймаутов в коллекции RDS.

Аналогичные настройки по управлению таймаутами RDP есть в секции GPO с настройками пользователя: User Configuration -> Administrative Templates -> Windows Components. С помощью политики из пользовательской секции вы сможете более гибко настроить группы пользователей с различными лимитами на длительность RDP сессий.

Параметры таймаутов для RDP сессий, которые задаются политиками можно также настроить напрямую через реестр. Указанным выше политикам соответствую следующие DWORD параметры в ветке реестра HKLMACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services

  • MaxDisconnectionTime
  • MaxIdleTime
  • MaxConnectionTime
  • MaxDisconnectionTime
  • RemoteAppLogoffTimeLimit

Например, чтобы установить максимальную продолжительность для отключенной RDP сессии в 15 минут (90000 мс), нужно изменить параметр реестра с помощью такой команды PowerShell:

Set-ItemProperty "HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" -Name MaxDisconnectionTime -Type 'DWord' -Value 900000

Также вы можно можете задать ограничение времени RDP сессии на вкладе sessions в свойствах локального (консоль lusrmgr.msc) или доменного пользователя (консоль dsa.msc — ADUC). Здесь доступны следующие параметры:

  • End a disconnected session
  • Active session limit
  • Idle session limit
  • When a session limit is reached or connection is broken: Disconnect from session или End Session
  • Allow reconnection: From any Client или From originating client only

настройки макс. длительности сессий в свойствах пользователя

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

Если у вас развернут RD Gateway Server для доступа к RDS серверам, вы можете настроить отдельные таймауты для пользователей, подключенных через RDGW (откройте политику авторизации подключений и перейдите на вкладку Timeouts).

В Windows Server 2008 R2 также можно было задать лимиты RDP сессий на хосте через специальную консоль tsconfig.msc (RD Session Host Configuration). Достаточно было запустить консоль, щелкнуть правой кнопкой по RDP-Tcp -> Properties. Настройки ограничения длительности сессий находятся на вкладке Sessions. Но в следующих версиях Windows Server эта консоль отсутствует (хотя вы можете вручную скопировать файлы tsadmin.msc и tsconfig.msc и использовать эти консоли и более новых версиях Windows Server).

лимиты rdp в консоли tsconfig.msc

Сообщения о превышении длительности RDP сессий

После того, как вы настроили политики с таймаутами RDS, пользователи увидит такое сообщение, перед завершением своей сессии:

Idle timer expired
Session has been idle over its time limit.
It will be disconnected in 2 minutes.
Press any key to continue the session.

сообщение о простаивающей сесии в windows через 2 минуты

При этом в логах хоста появляется Event ID 26.

Подробнее о логах RDP подключений. [/aler]

событие простаивающей rdp сессии

Вы можете отключить это предупреждение, установив в классе WMI Win32_TSSessionSettings значение EnableTimeoutWarning = 0.

Set-WmiInstance -Path "\\localhost\root\CIMV2\TerminalServices:Win32_TSSessionSetting.TerminalName='RDP-Tcp'" -Argument @{EnableTimeoutWarning=0}

Теперь, когда Windows будет автоматически завершать простаивающие RDP сеансы, пользователь получит от RDP клиента такое сообщение:

Your Remote Desktop Services session ended because the remote computer didn’t receive any input from you.

rds сессия завершена из-за неактивности пользователя

В некоторых случаях вы можете столкнуться с такой ошибкой в RDP клиенте:

Your Remote Desktop Services session has ended.
Another user connected to the remote computer, so your connection was lost. Try connecting again, or contact your network administrator.

rds сессий завершена другим пользователем

Это означает, что кто-то другой вошел на компьютер через RDP (когда количество одновременных RDP сессий на компьютере ограничено параметром Limit number of connections, например, в десктопных версиях Windows доступен только один сеанс). Либо вы повторно вошли на удаленных RDP/RDS хост с нового компьютера.

Вы можете разрешить множественные подключения под одним пользователем к RDP хосту с помощью параметра GPO Restrict Remote Desktop Services users to a single Remote Desktop Services session = Disabled (в ветке разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections).

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

RDP. мгновенное завершение сеансов при отключении

0

mikaelangelm

26.05.19

21:43

Приветствую, и спасибо за интерес к этой теме) Просьба подсказать, куда копать, если:

— При работе с rdp на машине с win10, после отключения от машины сеанс любого пользователя полностью завершается в течение 10 секунд. Если войти в эти 10 секунд, то сеанс будет восстановлен, иначе — нет, и профиль пользователя загружается заново.

— При этом просиходит событие 20519: В сеансе <номер сеанса> было превышено предельное время отключения, и он был завершен

— чуть подробнее здесь https://docs.google.com/document/d/1chzZZOFaGWQdPCJU3BXWQt5Z6cM0M3lC3_R5jtfm67E/edit?usp=sharing

1

vde69

26.05.19

21:52

в политиках время простоя сеанса поставить отличное от 0

2

mikaelangelm

26.05.19

22:02

(1) Благодарю за участие. Попробовал. Выставил права, обновил политики, перезашел, закрыл соединение — сеанс все равно завершился через 10 сек.

Добавил комментарий под заголовком «UPD 1» по ссылке

3

vde69

26.05.19

22:09

4

mikaelangelm

26.05.19

22:13

(3) Был на этой страничке до создания темы.

Предполагаю также, что в (2) для user0 проделывал действия из инструкции по ссылке

5

DGorgoN

27.05.19

02:15

Ребут вроде нужен.

6

mikaelangelm

27.05.19

07:34

(5) Увы, это не помогло.

7

Сияющий в темноте

27.05.19

08:39

Служба не висит,которая сеансы закрывает?

8

kzot

27.05.19

09:24

9

kzot

27.05.19

09:31

(8)+ хотя это не то что вам нужно

10

mikaelangelm

27.05.19

21:55

(7) Не подскажете название? Скорее всего висит в выполняемых, поскольку сеансы закрываются :)

11

lodger

27.05.19

22:39

а пробовал так:

Disable the «Session Time Limits» policies on the Windows 10 PC at home.

Open gpedit.msc

Navigate to:

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits

Disable any active policies.

Navigate to:

User Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits

Disable any active policies.

Reboot the computer.

12

mikaelangelm

28.05.19

23:28

(11) Попробовал. Не помогло

13

mikaelangelm

31.05.19

15:47

(7) Не подскажете название? Скорее всего висит в выполняемых, поскольку сеансы закрываются :)

14

mistеr

31.05.19

15:52

(12) Win 10 не сервер, может и не смотрит на эти политики.

Есть тонкий клиент для работы на RDP на котором в автозагрузке при входе в систему сразу устанавливается соединение с сервером по RDP.
Задача при отключении от RDP выполнять выход из Windows 10.
В интернет куча инструкций, как это сделать на RDP, а вот на физическом хосте ничего не находится((
Подскажите решение?


  • Вопрос задан

  • 843 просмотра

Я бы ковырял в таком направлении:
Вместо проводника при входе запускайте .bat с двумя командами — первая запуск mstsc, вторая — выход из системы. Окно батника спрячьте за пределы рабочего стола.
Кроме того — назначьте в планировщике проверку наличия процесса mstsc в текущем контексте. Если нету — выполнять логаут.

Варианты:

  • Найти альтернативный RDP клиент, в котором можно относительно легко отследить отключение и запустить нужный скрипт.
  • Написать скрипт (например с помощью ннкрон), который будет отслеживать состояние RDP клиента и данные в окне RDP клиента для отслеживания отключения. Может получится, может нет — давно не использовал родной RDP и не помню какие там варианты отключения и структура окна.
  • Сделать RDP клиента оболочкой по умолчанию — т.е. вместо проводника RDP клиент. Вероятно потребуется приложение для мониторинга RDP клиента и его запуска в случае закрытия — это режим киоска.
  • Не безопасно, но относительно просто: запускать RDP клиент до логина пользователя (вот тут у меня лежит пример сервиса для запуска любого приложения на экране логина).
  • На сервере мониторить выход пользователя и отправлять сигнал на клиент по сети, а на клиенте при получении сигнала — выходить из системы.
  • Написать свой клиент на .Net с нужным функционалом.

Пригласить эксперта


  • Показать ещё
    Загружается…

Минуточку внимания

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

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

1. Откройте редактор локальной групповой политики для всех пользователей.

Для запуска редактора групповых политик в Windows Server выполните в окне «Выполнить» — команду: gpedit.msc

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

3. На правой панели щелкните правой кнопкой мыши «Set time limit for active but idle Remote Desktop Services sessions » и нажмите «Edit».

4. Удаление ограничения по времени для простаивающих сеансов служб удаленных рабочих столов

Выберите «Not Configured» или «Disabled»Значение по умолчанию — «Not Configured».

5. Чтобы установить ограничение по времени, для простаивающих сеансов служб удаленных рабочих столов:

Выберите Включено.

В разделе «Options» щелкните раскрывающийся список «Idle session limit» и выберите время, которое вы хотите установить в качестве ограничения по времени. 

6. Нажмите OK.

После данных изменений, можете перезагрузить сервер. 

Через редактор реестра

1. Откройте меню «Пуск», затем введите regedit в поле поиска и нажмите Enter.

2. Если появится запрос UAC, нажмите Да.

3. В regedit перейдите в указанное ниже место: 

HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services

4. Чтобы установить ограничение по времени, для простаивающих сеансов служб удаленных рабочих столов
На правой панели служб терминалов щелкните правой кнопкой мыши пустое место, выберите «Создать» и «Параметр DWORD (32-разрядное)», введите MaxIdleTime и нажмите Enter.

На правой панели щелкните правой кнопкой мыши MaxIdleTime и выберите Modify

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

  Лимит времени     Данные значения реестра  
Никогда 0
1 минута 60000
5 минут 300000
10 минут 600000
15 минут 900000
30 минут 1800000
1 час 3600000
два часа 7200000
3 часа 10800000
6 часов 21600000
8 часов 28000000
12 часов 43200000
16 часов 57600000
18 часов 64800000
1 день 86400000
2 дня 172800000
3 дня 259200000
4 дня 345600000
5 дней 432000000

5. Удаление ограничения по времени для простаивающих сеансов служб удаленных рабочих столов

​​​​​​​
На правой панели щелкните правой кнопкой мыши MaxIdleTime и выберите Удалить

6. Закройте редактор реестра.

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

Через PowerShell

reg add "HKLM\\software\\policies\\microsoft\\windows nt\\Terminal Services" /v MaxIdleTime /d 0 /t REG_DWORD;

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

net stop TermService /y; net start TermService /y;

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

Также предлагаем рассмотреть другие полезные статьи:

  • Как посмотреть логи RDP подключений в Windows Server 2016, 2019
  • Как задать время отключения бездействующих сеансов RDP
  • Как включить восстановление предыдущей сессии на сервере Windows Server 2016, 2019?
  • Отключение UDP для RDP-подключений к Windows Server

Мирослав

Любопытный
Сообщения: 20
Зарегистрирован: 16 май 2017 14:52

не завершаются сеансы пользователей rdp

Здравствуйте.

Заметил, что не отрабатывает политика ограничения сеансов по времени как для отключенного так и для бездействующего. В gpedit в разделе службы удаленных раб.столов настроены ограничения 1 ч на бездействующего и 1 минута на завершение отключенного сеанса. В коллекции rdp так же проставлены настройки. Т.к. большинство пользователей не закрывает через пуск -выход , а через крестик сверху, то сеансы висят как отключенные без завершения и потребляют драгоценную память. Не могу понять, почему ни одна из настроек не отрабатывает.

Мирослав

Любопытный
Сообщения: 20
Зарегистрирован: 16 май 2017 14:52

Re: не завершаются сеансы пользователей rdp

Сообщение

Мирослав »

Здравствуйте!

Решил путем написания небольшого скрипта, который отслеживает определенное свойство сессии rdp, disk вроде. Через некоторое время этот параметр сеанса имеет опр. значение: 0 или 1. Исходя из этого состояния, скрипт делает логофф пользователям с нужным мне состоянием. Задача закинута в планировщик и запускается каждый час в теч. 12 часов начиная с утра.

Мирослав

Любопытный
Сообщения: 20
Зарегистрирован: 16 май 2017 14:52

Re: не завершаются сеансы пользователей rdp

Сообщение

Мирослав »

Не написал сам скрипт.

ipconfig|out-null;[Console]::OutputEncoding= [System.Text.Encoding]::GetEncoding(«cp866»)
$serverName = «localhost»
$sessions = query session /server $serverName| ?{ $_ -notmatch ‘^ СЕАНС’ } | %{
$item = «» | Select «SessionName», «Username», «Id», «State», «Type»
$item.SessionName = $_.Substring(1,18).Trim()
$item.Username = $_.Substring(19,20).Trim()
$item.Id = $_.Substring(39,9).Trim()
$item.State = $_.Substring(48,8).Trim()
$item
}

foreach ($session in $sessions){

if ($session.SessionName -eq «» -and $session.State -eq «Диск»){
#$session.Username + » » + $session.State + » » + $session.SessionName
logoff /server $serverName $session.Id
}

}

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

Алексей Максимов

Администратор сайта
Сообщения: 572
Зарегистрирован: 14 сен 2012 06:50
Откуда: г.Сыктывкар
Контактная информация:

Мирослав

Любопытный
Сообщения: 20
Зарегистрирован: 16 май 2017 14:52

Re: не завершаются сеансы пользователей rdp

Сообщение

Мирослав »

Здравствуйте!

Вот снова вернулся к этой проблеме, в предыдущих проблемах оставшихся висеть сеансах была политика домена. Оказалось, что на сервер была включена политика 12 часовой логофф, то есть выбрасывать только после 12 часового простоя. Отключили и штатно стало все завершаться. Но вот возникла на новом сервере, 2 недели только работает и у 2-х пользователей проблема со входом: насколько я понял, после часа неактивности срабатывает политика логофф, сеанс висит в состоянии «отключен», но выброс не сработал. Пользователь пытается войти, появляется окно авторизации с его именем, но поле пароль не активно, окно заморожено и не дает ничего ввести. Завершал taskkill все процессы под ней, логофф делал, все равно часть процессов поднимается и висит, не дает войти пока не сделаешь рестарт системе. На сервере стоит secret net и Kaspersky 10.1.2 для Win server. Во вложении список процессов, которые висят под пользователем. Безопасники говорят, что сикрет нет стоит не в активном режиме, но все же есть подозрение, что это он может выдавать такое. Плохо, что нельзя в онлайн режиме это проверить, удалить его и посмотреть что будет. Спасибо

Вложения
Screenshot_1.png

Screenshot_1.png (16.09 КБ) 28471 просмотр

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows 10 ltsc 2021 отзывы
  • Windows 10 останавливается время
  • Twin usb joystick driver windows 10
  • Windows visual c для чего нужен
  • Почему не открывается служба безопасности windows 10