
Когда пользователь закрывает окно сеанса RDP/RDS в терминальном клиенте (mstsc.exe
, RDCMan или веб-клиент Remote Desktop HTML5), просто нажав крестик в правом верхнем углу без выхода из системы, его сессия переходит из активной в отключенный режим. В этом режиме все приложения, открытые документы и окна по-прежнему работают на компьютере с удаленным рабочим столом и потребляют системные ресурсы.
По умолчанию RDP-сессия пользователя в Windows может оставаться в отключенном состоянии до тех пор, пока ее не завершит пользователь или администратор, или пока компьютер не будет перезагружен. Это довольно удобно, так как пользователь может в любой момент подключиться к предыдущему сеансу удаленного рабочего стола и продолжить работу с запущенными приложениями и открытыми файлами.
На следующем скриншоте видно, что отключенные сеансы пользователей на RDS-сервере под управлением Windows Server 2019 потребляют около 40 % оперативной памяти сервера.
Кроме того, такие сеансы могут блокировать открытые файлы на файловых серверах, вызывать проблемы с некорректным сохранением данных в приложениях, папках перемещаемых профилей или на дисках пользовательского профиля. Отключенные сеансы RDP часто вызывают проблемы с блокировкой учетной записи пользователя домена после смены пароля (когда сеанс RDS продолжает работать под старым паролем пользователя).
Использование quser
можно просмотреть, когда был начат пользовательский сеанс RDP, как долго он простаивал, а также текущее состояние сеанса.
Также можно вывести информацию о продолжительности сеансов пользователей в ферме RDS с помощью сценария PowerShell (укажите FQDN сервера RDS Connection Broker):
$connectionBrocker = “mun-rdscb.woshub.com"
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) } }
Можно настроить максимальную продолжительность активных, отключенных и простаивающих (без активности пользователя) сеансов для служб удаленных рабочих столов.
Автоматическое отключение отключенных и неактивных сеансов пользователей удаленного рабочего стола
Чтобы автоматически завершать отключенные сеансы RDP/RDS через определенный промежуток времени, необходимо правильно установить ограничения сеанса (таймауты).
Если у вас есть ферма служб удаленных рабочих столов, развернутая на Windows Server, вы можете настроить параметры таймаута сеанса пользователя в настройках коллекции RDS на сервере Сеанс вкладка.
Укажите период времени, по истечении которого вы хотите завершить отключенный сеанс удаленного рабочего стола, на вкладке Завершение отключенного сеанса (по умолчанию продолжительность сеанса RDP неограниченна) Никогда). Вы также можете установить максимальное время активной сессии пользователя (Ограничение активного сеанса) и завершить неработающий сеанс (Ограничение холостого сеанса). Эти жесткие таймауты применяются ко всем пользовательским сессиям в коллекции RDS.
В Windows Server 2022/2019/2016/2012R2 можно установить таймауты сеансов 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. Доступны следующие настройки тайм-аута удаленного рабочего стола:
- Установка лимита времени для отключенного сеанса;
- Установить ограничение времени для активных, но неработающих сеансов Remote Desktop Services — политика позволяет завершать неактивные сеансы RDP, в которых нет пользовательского ввода (например, перемещения мыши или ввода текста на клавиатуре);
- Установка ограничения времени для активных сеансов служб удаленных рабочих столов — это максимальное время работы любого сеанса RDP (даже активного), по истечении которого он переходит в состояние отключения;
- Завершить сеанс при достижении временных ограничений — устанавливает время, по истечении которого сеанс RDP будет завершен (выход из системы), а не отключен;
- Устанавливает ограничение по времени для выхода из сеансов RemoteApp.
По умолчанию эти параметры не настроены. Чтобы автоматически завершать все отключенные сеансы пользователей RDP через 8 часов, включите опцию «Установить ограничение по времени для отключенных сеансов» политику и выберите 8 часов в выпадающем списке.
Сохраните изменения и обновите параметры групповой политики на хосте RD (gpupdate /force
). Новые параметры таймаута будут применяться только к новым сеансам RDP (текущие сеансы пользователей на RDSH придется завершать вручную).
Параметры GPO имеют приоритет над параметрами тайм-аута в коллекции RDS.
Вы также можете установить ограничения на время сеанса RDP через реестр. Следующие DWORD-параметры из раздела HKLM\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 на странице Настройки вкладка в свойствах локального (lusrmgr.msc
) или доменного пользователя (dsa.msc
— Консоль Active Directory Users and Computers). Здесь доступны следующие параметры:
- Завершить отключенный сеанс;
- Предел активной сессии;
- Предел холостого сеанса;
- При достижении предела сеанса или разрыве соединения: «Отключиться от сеанса» или «Завершить сеанс»;
- Разрешить повторное подключение: «От любого клиента» или «Только от отправляющего клиента».
Если у вас развернут сервер RD Gateway Server для удаленного доступа к хостам RDS, вы можете настроить отдельные тайм-ауты для пользователей, подключенных через RDGW (откройте политику авторизации подключений и перейдите в раздел Тайм-ауты вкладка).
В Windows Server 2008 R2 также можно было установить тайм-аут сеанса RDP с помощью специального параметра tsconfig.msc (RD Session Host Configuration). Достаточно открыть консоль и правой кнопкой мыши щелкнуть RDP-Tcp -> Properties. Ограничения таймаута сеанса находятся на странице Сессии вкладка. Однако в новых версиях Windows Server такой консоли нет (хотя вы можете вручную скопировать файлы tsadmin.msc и tsconfig.msc и использовать эти консоли и в новых версиях Windows Server).
Сеанс удаленного рабочего стола простаивает более установленного лимита времени
После настройки тайм-аутов 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.
Перед отключением пользователя в System Event Viewer регистрируется событие с идентификатором 26.
Вы можете отключить это предупреждение, установив параметр EnableTimeoutWarning = 0 в классе WMI Win32_TSSessionSettings.
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.
В некоторых случаях вы можете столкнуться с этой ошибкой в клиенте 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.
Это означает, что кто-то другой подключился к компьютеру по RDP, когда количество одновременных сеансов RDP на компьютере ограничено параметром Параметр Ограничить количество подключений (например, в настольных версиях Windows доступен только один удаленный сеанс). Или вы вошли в RDP-хост с нового компьютера.
Вы можете разрешить несколько подключений под одной учетной записью пользователя к хосту RDP с помощью параметра GPO Ограничение пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов = Disabled (в разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Connections).