Содержание статьи

Удаленные сеансы RDP, VNC или SSH часто разрываются из-за тайм-аутов простоя, настроек брандмауэра или ограничений операционной системы. По умолчанию Windows Server отключает неактивные подключения через 15 минут, а Linux-системы могут завершать SSH-сессии после 10–30 минут бездействия. Эти прерывания нарушают рабочий процесс, особенно при выполнении длительных задач – например, компиляции кода, резервного копирования или мониторинга серверов.
Первый шаг – настройка параметров на стороне сервера. В Windows измените значения KeepAlive в реестре: откройте regedit, перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server и создайте DWORD-параметр KeepAliveInterval со значением 1 (интервал проверки в секундах). Для SSH на Linux отредактируйте файл /etc/ssh/sshd_config, добавив строки ClientAliveInterval 60 и ClientAliveCountMax 3 – это обеспечит отправку проверочных пакетов каждую минуту и разрыв соединения только после трех неудачных попыток.
На клиентской стороне используйте инструменты для эмуляции активности. Для RDP подойдет утилита Caffeine, которая периодически нажимает невидимые клавиши, или скрипт PowerShell: $wshell = New-Object -ComObject WScript.Shell; while ($true) { $wshell.SendKeys(‘{SCROLLLOCK}’); Start-Sleep -Seconds 30 }. В Linux-терминалах запускайте tmux или screen – они сохраняют сессию даже при обрыве соединения. Для VNC-клиентов включите опцию Send empty updates в настройках подключения.
Проблемы с сетью решаются настройкой QoS на маршрутизаторе или использованием VPN с поддержкой TCP Keepalive. Если провайдер обрывает соединение при отсутствии трафика, запустите фоновый пинг: ping -t 8.8.8.8 > nul (Windows) или ping -i 60 8.8.8.8 & (Linux). Для критически важных задач разверните autossh – он автоматически восстанавливает SSH-туннели при разрывах, используя параметры -M 0 -N -o «ServerAliveInterval 30» -o «ServerAliveCountMax 3».
Настройка параметров энергосбережения на локальном компьютере

Отключение экрана и переход в спящий режим – основные причины разрыва RDP-сессий. В Windows 10/11 откройте Параметры → Система → Питание и спящий режим. Установите значения «Экран» и «Сон» в «Никогда» для обоих режимов питания (от сети и от батареи). Это предотвратит автоматическое отключение оборудования.
Для более тонкой настройки используйте Панель управления → Электропитание → Настройка схемы электропитания. В разделе «Изменить дополнительные параметры питания» разверните «Жесткий диск» и установите «Отключать через» на 0 минут. Аналогично настройте параметры «USB-порты» и «PCI Express», выбрав «Отключение» → «Запрещено».
| Категория | Параметр | Рекомендуемое значение |
|---|---|---|
| Экран | Отключать через | Никогда |
| Сон | Переход в спящий режим | Никогда |
| Жесткий диск | Отключать через | 0 минут |
| USB | Выборочная приостановка | Отключено |
| PCI Express | Управление питанием состояния связи | Отключено |
На ноутбуках с Windows проверьте настройки «Крышка» в дополнительных параметрах питания. Установите «Действие при закрытии крышки» в «Действие не требуется». Это исключит случайные разрывы сессий при физическом закрытии устройства.
Для серверных ОС (Windows Server 2016/2019/2022) используйте PowerShell-команду: Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\238C9FA8-0AAD-41ED-83F4-97BE242C8F20\7bc4a2f9-d8fc-4469-b07b-33eb785aaca0' -Name 'Attributes' -Value 2. Она разблокирует скрытые параметры энергосбережения в графическом интерфейсе, включая настройки тайм-аутов для сетевых адаптеров.
Если после изменений сессия все равно разрывается, проверьте журнал событий: Просмотр событий → Журналы Windows → Система. Фильтруйте по источнику Power-Troubleshooter или Kernel-Power. Ошибки с кодом 42 указывают на принудительное отключение из-за политик, а 131 – на проблемы с драйверами устройств.
. Фильтруйте по источнику Power-Troubleshooter или Kernel-Power. Ошибки с кодом 42 указывают на принудительное отключение из-за политик, а 131 – на проблемы с драйверами устройств.»>
На компьютерах с UEFI BIOS отключите функции Connected Standby или Modern Standby. Эти режимы, несмотря на заявленную «мгновенную готовность», часто вызывают прерывания сетевых подключений. В BIOS найдите раздел Power Management и установите Suspend Mode в S3 вместо Auto или S0 Low Power Idle.
Для фиксации настроек создайте резервную копию текущей схемы питания: powercfg /export "C:\power_scheme.pow" GUID, где GUID – идентификатор активной схемы (узнать можно через powercfg /list). Восстановить настройки можно командой powercfg /import "C:\power_scheme.pow". Это полезно при сбросе конфигурации после обновлений системы.
, где GUID – идентификатор активной схемы (узнать можно через powercfg /list). Восстановить настройки можно командой powercfg /import "C:\power_scheme.pow". Это полезно при сбросе конфигурации после обновлений системы.»>
Использование скриптов для автоматического движения курсора

Автоматическое перемещение курсора предотвращает срабатывание тайм-аутов бездействия на удалённом рабочем столе. Простейший способ – скрипты на Python с библиотекой pyautogui. Установите её командой pip install pyautogui, затем создайте файл cursor_mover.py с кодом:
import pyautogui
import time
while True:
pyautogui.moveRel(1, 0, duration=0.1)
pyautogui.moveRel(-1, 0, duration=0.1)
time.sleep(60)
Этот скрипт каждую минуту смещает курсор на 1 пиксель вправо и возвращает обратно. Параметр duration=0.1 задаёт плавность движения, чтобы не привлекать внимание. Для Windows можно скомпилировать скрипт в EXE с помощью pyinstaller --onefile cursor_mover.py и запускать фоново.
На Linux и macOS аналогичный эффект достигается через xdotool. Установите пакет (sudo apt install xdotool для Ubuntu), затем создайте bash-скрипт:
#!/bin/bash
while true; do
xdotool mousemove_relative 1 0
xdotool mousemove_relative -- -1 0
sleep 60
done
Скрипт требует прав на выполнение (chmod +x script.sh) и запускается в терминале. Для скрытого выполнения добавьте nohup ./script.sh &. На macOS замените xdotool на cliclick (brew install cliclick), а команду на cliclick rc:1,0 rc:-1,0.
Для корпоративных сред, где установка сторонних библиотек запрещена, используйте встроенные средства. В Windows PowerShell создайте файл Move-Cursor.ps1:
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Cursor {
[DllImport("user32.dll")]
public static extern bool SetCursorPos(int X, int Y);
}
"@
while ($true) {
$pos = [System.Windows.Forms.Cursor]::Position
[Cursor]::SetCursorPos($pos.X + 1, $pos.Y)
[Cursor]::SetCursorPos($pos.X, $pos.Y)
Start-Sleep -Seconds 60
}
Запускайте скрипт с правами администратора, чтобы обойти ограничения политик безопасности. На macOS аналогично работает AppleScript – сохраните файл cursor.scpt с содержимым:
repeat
tell application "System Events"
set currentPos to position of mouse pointer
set position of mouse pointer to {item 1 of currentPos + 1, item 2 of currentPos}
set position of mouse pointer to currentPos
end tell
delay 60
end repeat
Минимизируйте влияние скриптов на производительность: выбирайте интервалы не чаще 30–60 секунд, избегайте резких движений курсора. Для проверки эффективности используйте утилиты мониторинга сессий, например qwinsta в Windows или who -u на Linux. Если удалённый сервер всё равно отключается, комбинируйте скрипты с настройками групповой политики или параметрами RDP-клиента.
Безопасность: не храните скрипты в общедоступных папках, ограничивайте права на выполнение. В корпоративных сетях согласуйте использование с ИТ-отделом – некоторые системы мониторинга могут расценивать автоматическое движение курсора как подозрительную активность. Альтернатива – настройка параметра KeepAliveInterval в реестре Windows (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server) на значение 1 (секунды), но это требует прав администратора.
Отключение тайм-аута сеанса в настройках удаленного подключения

Тайм-аут сеанса RDP по умолчанию составляет 15 минут бездействия на стороне клиента и 1 час на стороне сервера (Windows Server). Чтобы отключить его, измените параметры в групповой политике или реестре. На сервере откройте gpedit.msc, перейдите в Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов удалённых рабочих столов → Сеансы и установите значения:
- Ограничить время ожидания подключенного сеанса → Отключено
- Ограничить время простоя сеанса → Отключено
- Завершать сеанс при превышении лимита времени → Отключено
После изменений примените политику командой gpupdate /force. Для Windows 10/11 Pro аналогичные настройки доступны через gpedit.msc в разделе Конфигурация компьютера → Административные шаблоны → Windows Components → Remote Desktop Services → Remote Desktop Session Host → Session Time Limits.
Если групповая политика недоступна (например, в Windows Home), отредактируйте реестр. Откройте regedit, найдите ветку HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services и создайте или измените следующие параметры типа DWORD:
MaxDisconnectionTime→0(отключает тайм-аут при разрыве)MaxIdleTime→0(отключает тайм-аут бездействия)fResetBroken→0(запрещает сброс сеанса при обрыве)
Перезагрузите компьютер для применения изменений. Учтите, что отключение тайм-аутов повышает нагрузку на сервер и увеличивает риск несанкционированного доступа при забытых сеансах.
На клиентской стороне (например, в mstsc.exe) тайм-аут можно обойти через настройки подключения. В окне «Подключение к удалённому рабочему столу» нажмите Показать параметры → Дополнительно и выберите Подключаться, даже если проверка подлинности не удалась. Затем в разделе Локальные ресурсы установите флажок Клавиатура → Применить сочетания клавиш Windows только в удалённом сеансе – это предотвратит случайное сворачивание сеанса. Для постоянных подключений сохраните настройки в RDP-файл и добавьте строку disableconnectionsharing:i:1, чтобы избежать разрывов при переключении пользователей.
Для Linux-клиентов (например, Remmina или FreeRDP) используйте параметры командной строки: xfreerdp /v:server /u:user +clipboard /dynamic-resolution /timeout:0. В Remmina настройте профиль подключения с параметром Безопасность → Отключить проверку подлинности и установите Тайм-аут подключения на 0. На macOS в Microsoft Remote Desktop добавьте параметр connection timeout=0 в настройках подключения через редактирование plist-файла или используйте терминал: defaults write com.microsoft.rdc.macos ClientSettings.EnforceConnectionTimeout -bool false.
Проверка и обновление драйверов сетевых адаптеров

Устаревшие или некорректные драйверы сетевых адаптеров – одна из основных причин разрывов соединения при работе с удалённым рабочим столом. Откройте «Диспетчер устройств» (Win + X → Диспетчер устройств), разверните раздел «Сетевые адаптеры» и проверьте наличие жёлтых восклицательных знаков рядом с устройствами. Если они есть, драйвер требует переустановки. Для обновления щёлкните правой кнопкой по адаптеру (например, Intel Ethernet Connection или Realtek PCIe GbE Family Controller), выберите «Обновить драйвер» → «Автоматический поиск обновлённых драйверов». Windows загрузит актуальную версию с серверов Microsoft, но для максимальной совместимости лучше скачать драйвер напрямую с сайта производителя оборудования (Intel, Realtek, Broadcom) или материнской платы.
Если автоматическое обновление не дало результатов, удалите драйвер полностью: в «Диспетчере устройств» выберите «Удалить устройство» и поставьте галочку «Удалить программы драйверов для этого устройства». После перезагрузки система установит базовый драйвер, но для стабильной работы замените его на фирменный. Версии драйверов можно проверить через командную строку: выполните wmic nic get name, driverversion – сравните полученные данные с актуальными на сайте производителя. Например, для адаптеров Intel последняя версия драйвера на 2024 год – 28.2, для Realtek – 1150.0.10.0.
Настройте автоматическое обновление драйверов через «Центр обновления Windows» (Параметры → Центр обновления Windows → Дополнительные параметры → Драйверы), но отключите его для сетевых адаптеров, если используете драйверы от производителя. В некоторых случаях помогает откат драйвера на предыдущую версию: в свойствах адаптера перейдите на вкладку «Драйвер» и нажмите «Откатить». Если проблема сохраняется, протестируйте адаптер на другом ПК или замените кабель Ethernet – физические неисправности часто маскируются под программные ошибки.
Настройка брандмауэра и антивируса для исключения разрывов

Брандмауэр Windows по умолчанию блокирует RDP-трафик (порт 3389) при подключении из внешних сетей. Чтобы разрешить соединения, откройте «Панель управления» → «Брандмауэр Windows Defender» → «Разрешить взаимодействие с приложением или компонентом». Найдите «Удаленный рабочий стол» и установите флажки для частных и общественных сетей. Для корпоративных сред используйте групповые политики: gpedit.msc → «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Службы удаленных рабочих столов» → «Узел сеансов удаленных рабочих столов» → «Подключения» → «Разрешить удаленные подключения к этому компьютеру».
Антивирусы часто прерывают RDP-сессии из-за эвристического анализа или блокировки сетевых пакетов. В Kaspersky Endpoint Security добавьте исключение для процесса mstsc.exe и порта 3389 в разделе «Защита сети» → «Правила для приложений». В ESET NOD32 перейдите в «Настройки» → «Защита сети» → «Изменить список правил брандмауэра» и создайте правило для входящих/исходящих TCP-соединений на порт 3389. Для Symantec Endpoint Protection отключите сетевую защиту для RDP через политику «Application and Device Control».
- Отключите временно антивирус для тестирования: если разрывы исчезают, проблема в его настройках.
- Проверьте журналы брандмауэра (
eventvwr.msc→ «Журналы Windows» → «Безопасность») на предмет блокировок с кодом события 5156. - Используйте
netsh advfirewall firewall show rule name=allдля проверки активных правил.
Для Linux-серверов с iptables добавьте правило: sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT. Сохраните правила командой sudo iptables-save > /etc/iptables/rules.v4. В firewalld выполните: sudo firewall-cmd --permanent --add-port=3389/tcp и sudo firewall-cmd --reload. Если используется UFW, разрешите порт: sudo ufw allow 3389/tcp.
В корпоративных сетях с Cisco ASA или Palo Alto Networks настройте политики безопасности для разрешения RDP-трафика между сегментами. В Cisco ASA создайте ACL: access-list RDP extended permit tcp any any eq 3389, затем примените его к интерфейсу. В Palo Alto добавьте правило в «Policies» → «Security» с источником (например, «Trust-LAN»), назначением (сервер RDP) и сервисом «tcp-3389».
Если разрывы сохраняются, проверьте тайм-ауты сессий. В Windows Server настройте групповую политику: gpedit.msc → «Конфигурация компьютера» → «Административные шаблоны» → «Компоненты Windows» → «Службы удаленных рабочих столов» → «Узел сеансов удаленных рабочих столов» → «Временные ограничения сеанса». Установите «Завершать сеанс при превышении лимита» в «Отключено», а «Активный сеанс» – в «Никогда». Для Linux-серверов с xrdp отредактируйте /etc/xrdp/xrdp.ini, установив max_bpp=32 и use_vsock=false.
Для мониторинга используйте Wireshark с фильтром tcp.port == 3389 или tshark -i eth0 -f "port 3389". Анализируйте пакеты на предмет TCP RST или FIN-флагов, указывающих на принудительное закрытие соединения. В Windows включите аудит сетевых подключений: auditpol /set /subcategory:"Network Policy Server" /success:enable /failure:enable. Логи доступны в «Просмотр событий» → «Журналы Windows» → «Безопасность».
