Як задати час відключення недіючих сеансів RDP
Після запуску потрібної програми на приділеному 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;
Тепер ваша термінальна сесія не закриватиметься за відсутності активності.
Також пропонуємо розглянути інші корисні статті:
Налаштування лімітів (таймаутів) для активних/вимкнених RDP/RDS сесій у Windows
Коли користувач зі свого комп'ютера закриває вікно своєї RDP/RDS сесії в термінальному клієнті (mstsc.exe, RDCMan або RDP HTML WEB клієнту) простим натисканням на хрестику у вікні, без виконання виходу (logoff), його сесія переходить з активного режиму в режим disconnected (роз'єднаний сеанс). У цьому режимі всі запущені користувачем програми, відкриті документи та вікна продовжують працювати на віддаленому сервері та споживати ресурси.
За замовчуванням RDP сесія користувача в Windows може перебуває в стані disconnected до перезавантаження комп'ютера або явного її завершення користувачем або адміністратором. Це зручно, т.к. користувач може в будь-який момент підключитися до своєї старої сесії та продовжити роботу із запущеними програмами та відкритими документами.
На наступному скріншоті видно, що відключені сесії користувачів на сервері RDS з Windows Server 2019 споживають близько 35% пам'яті сервера.
Крім того, незавершені сесії можуть блокувати відкриті файли на файлових серверах, викликати проблеми з коректним збереженням даних у додатках, профілях або User Profile Disks. Крім наявності старих сесій RDP часто викликає проблему блокування облікового запису користувачів в домені після зміни пароля (коли RDS сесії продовжує працювати під старими паролем користувача).
За допомогою команди quser можна дізнатися, коли розпочато 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 , `
@ >
Ви можете налаштувати максимальну тривалість активних, відключених та простоюючих (без активності користувача) сесії для 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.
У Windows Server 2012 R2/2016/2019/22 можна налаштувати таймівти RDP сесій за допомогою групових політик. Можна використовувати як редактор доменних GPO gpmc.msc, так і редактор локальних групових політик (gpedit.msc) на конкретному сервері RDS (або на десктопній версії Windows, якщо ви дозволили до неї множинні RDP підключення).
Параметри таймів RDP сесій знаходяться в розділі GPO Computer Configuration -> Policyes -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Session Time Limits (Конфігурація комп'ютера -> Політики -> Адміністративні шаблони -> Компоненти Windows -> Служби віддалених робочих столів -> Вузол сеансів віддалених робочих столів -> Обмеження сеансів за часом). Доступні такі політики таймаутів:
- Settimelimitfordisconnectedsession (Встановити обмеження часу для вимкнених сеансів);
- SettimelimitforactivebutidleRemoteDesktopServicessessions (Задати обмеження часу для активних, але недіючих сеансів служб віддалених робочих столів) – політика дозволяє завершити сесії, що простоюють RDP, в яких відсутнє введення з боку користувача (рух мишкою, введення символів з клавіатури);
- SettimelimitforactiveRemoteDesktopServicessessions (Задати обмеження часу для активних сеансів служб віддалених робочих столів) – максимальний термін для будь-якої (навіть активної) RDP сесії користувача, після якого вона переводиться в стан disconnected;
- EndSessionwhentimelimitsarereached (Завершувати сеанс при досягненні обмеження за часом) – через який час потрібно завершувати RDS сесію (logoff) замість переведення її до disconnected;
- Set time limit for logoff RemoteApp sessions (Встановити межу для виходу із сеансів RemoteApp).
За промовчанням ці параметри не налаштовані. Щоб автоматично завершувати вимкнені RDP сеанси користувачів через 8 годин, увімкніть політику “ Set time limit for disconnected session ” = Enabled , і у списку, що випадає, виберіть 8 годин .
Збережіть зміни та оновіть налаштування групових політик у Windows (gpupdate /force). Нові налаштування таймів будуть застосовуватися тільки до нових RDP сеансів, поточні сеанси доведеться завершити вручну.
Налаштування GPO мають більший пріоритет, ніж налаштування тайм-аутів у колекції RDS.
Аналогічні налаштування керування таймаутами RDP є в секції GPO з налаштуваннями користувача: User Configuration -> Administrative Templates -> Windows Components. За допомогою політики з секції користувача ви зможете гнучкіше налаштувати групи користувачів з різними лімітами на тривалість RDP сесій.
Параметри таймаутів для RDP сесій, які задаються політиками, можна також налаштувати безпосередньо через реєстр. Зазначеним вище політикам відповідаю наступні DWORD параметри у гілці реєстру HKLMACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services
- MaxDisconnectionTime
- MaxIdleTime
- MaxConnectionTime
- MaxDisconnectionTime
- RemoteAppLogoffTimeLimit
Наприклад, щоб встановити максимальну тривалість для відключеної RDP сесії в 15 хвилин (90000 мс), потрібно змінити параметр реєстру за допомогою такої команди PowerShell:
Set-ItemProperty "HKLM:SOFTWAREPoliciesMicrosoftWindows NTTerminal Services" -Name MaxDisconnectionTime -Type 'DWord' -Value 900000
Також можна задати обмеження часу RDP сесії на вкладі sessions у властивостях локального (консоль lusrmgr.msc) або доменного користувача (консоль dsa.msc — ADUC ). Тут доступні такі параметри:
- End a disconnected session
- Active session limit
- Idle session limit
- Якщо ліміт сеансу реалізовано або з'єднано: 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
Після того, як ви налаштували політики з тайм-аутами RDS, користувачі побачить таке повідомлення, перед завершенням своєї сесії:
Idle timer expired_x000D_Session has been idle over its time limit._x000D_It will be disconnected in 2 minutes._x000D_Press any key to continue the session.
У логах хоста з'являється Event ID 26.
Ви можете вимкнути це попередження, встановивши у класі WMI Win32_
TSSessionSettings значення EnableTimeoutWarning = 0 .
Set-WmiInstance -Path "\localhostrootCIMV2TerminalServices:Win32_TSSessionSetting.TerminalName='RDP-Tcp'" -Argument @
Тепер, коли Windows автоматично завершуватиме простоюючі RDP сеанси, користувач отримає від RDP клієнта таке повідомлення:
Your Remote Desktop Services session завершений тому, що remote computer didn’t receive any input from you.
У деяких випадках ви можете зіткнутися з такою помилкою в клієнті RDP:
Your Remote Desktop Services session has ended._x000D_Another user connected to remote computer, так що ваш connection був короткий. Try connecting again, або contact your network administrator.
Це означає, що хтось інший увійшов на комп'ютер через 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).