Веб- и SSH-сессии
После ручного подключения Sambryx разрешает работу в течение 15 минут после последней зарегистрированной активности администратора. Deadline задаёт сервер, отдельно от времени последнего HTTP-запроса контейнера. Пароль и приватный ключ не сохраняются для повторного входа; после истечения требуется новое ручное подключение.
Активность и предупреждение
Активностью считаются отправленные POST/PUT/PATCH/DELETE-запросы авторизованного пользователя,
переходы по ссылкам между разделами, явное обновление списка или Dashboard, ввод в поиске и
редактирование формы. Для действий внутри страницы UI отправляет защищённый CSRF запрос
POST /api/auth/activity; значения полей этим запросом не передаются. Одновременные события ввода
объединяются, пока предыдущий запрос продления выполняется. Активность учитывается по времени
приёма сервером, а не по времени события браузера.
Чтение страницы, движения мыши, автоматический переход на стартовую страницу и фоновые обновления данных доступ не продлевают. Произвольные GET/HEAD/OPTIONS-запросы также не продлевают deadline. Запрос продления, пришедший ровно на deadline или позже, получает отказ.
За минуту до предполагаемого истечения UI показывает предупреждение с кнопкой «Продолжить работу». Кнопка продлевает только ещё действующую сессию. Все вкладки одного браузерного профиля используют одну серверную сессию: работа в одной вкладке продлевает её для остальных, выход отзывает доступ во всех вкладках.
UI проверяет состояние через GET /api/auth/session при открытии, возвращении фокуса,
смене видимости и каждые 30 секунд. Эти проверки ничего не продлевают. BroadcastChannel
между вкладками передаёт только сигнал перечитать серверное состояние. Браузерные часы,
таймеры и хранилище не являются источником разрешения доступа. Во сне устройства или
скрытой вкладке предупреждение может запоздать; сервер всё равно отказывает после deadline.
При HTTP 401 UI переходит на страницу подключения, не повторяя mutation и не восстанавливая SSH.
Завершение и выполняющиеся операции
При истечении или выходе новые операции запрещаются, HTTP-сессия инвалидируется. Если операций нет, SSH закрывается сразу. Уже принятый HTTP-запрос сохраняет доступ к своей цепочке SSH-команд до завершения запроса, включая команды после проверки и замены конфигурации. Другой запрос не получает этот доступ. Это относится и к выходу из другой вкладки во время операции.
Ожидание выполняющихся операций ограничено пятью минутами после deadline или выхода. Если запрос закончился раньше, соединение закрывается сразу. На пределе новые команды внутри старого запроса тоже запрещаются. Уборщик проверяет неиспользуемые сессии и предел ожидания каждую секунду без участия браузера. Это периодическая уборка, а не гарантия реального времени: задержка планировщика/JVM может отложить физическое закрытие соединения. При следующем запросе сервер самостоятельно проверяет deadline, не ожидая уборщика.
Существующие таймауты SSH: подключение — 7 секунд, команда — 30 секунд по умолчанию. Таймер команды начинается после записи stdin; он не ограничивает целиком HTTP-запрос, запись stdin или все варианты чтения вывода. Поэтому лимит ожидания сессии существует отдельно. Он ограничивает удержание SSH, но не обещает немедленного завершения Java-потока.
Закрытие SSH-канала или соединения не доказывает остановку удалённого процесса. Завершение цепочки команд не гарантирует rollback, атомарность изменений или восстановление после аварии сервера. Если потерян ответ операции, перед повтором проверьте состояние конфигурации и службы. Автоматического повтора изменяющих запросов нет.
Закрытие вкладки не считается выходом. Используйте кнопку выхода; для забытой вкладки действует серверное ограничение бездействия. Настройки SSH host-key trust, sudo, ролей, сетевого доступа и HTTPS этот механизм не изменяет.