Как исключить приостановку рабочего стола GNOME, когда активна сессия SSH?

Вопрос или проблема

Я использую настольную версию Ubuntu 22. Время от времени мне нужно запускать машину с активными SSH-сессиями от различных пользователей, как сервер.

Есть ли способ настроить GNOME (или Ubuntu в общем), чтобы предотвратить приостановку рабочего стола при наличии активной SSH-сессии? Я предпочёл бы решение, которое не требует полного отключения приостановки, а только когда используется SSH. Я настроил функцию пробуждения по сети, чтобы удалённо возобновлять работу машины после приостановки.

Похоже, что основной инструмент, доступный для этой задачи, — это gnome-session-inhibit. Поэтому я попробовал добавить этот код в sshd_config:

ForceCommand gnome-session-inhibit --inhibit suspend:idle --reason "SSH Session" bash

Но это не совсем работает. Если пользователь пытается подключиться, но ещё не вошёл в свою сессию GNOME, эта команда выдает ошибку.

Я также рассматривал возможность настроить приостановку бездействия через gsetting

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

Но и это, похоже, не работает по той же причине.

Заранее спасибо!

Ответ или решение

Как предотвратить приостановку рабочего стола GNOME при активной SSH-сессии?

Если вы используете Ubuntu 22 с рабочим окружением GNOME и хотите, чтобы ваш компьютер не переходил в режим приостановки во время активных SSH-сессий, вы можете достичь этого с помощью утилиты gnome-session-inhibit и правильной конфигурации вашего SSH-сервера.

1. Установка gnome-session-inhibit

Убедитесь, что gnome-session-inhibit доступен в вашей системе. Обычно он предустановлен в дистрибутиве Ubuntu с GNOME. Чтобы проверить его наличие, выполните команду:

which gnome-session-inhibit

Если утилита установлена, вы должны увидеть путь к ней. Если нет, вы можете установить необходимые пакеты:

sudo apt install gnome-session-bin

2. Настройка SSH

Добавьте следующую строку в файл конфигурации sshd_config, обычно расположенный по пути /etc/ssh/sshd_config:

ForceCommand gnome-session-inhibit --inhibit suspend:idle --reason "SSH Session" bash

Однако следует учитывать, что использование ForceCommand в sshd_config приведет к ошибке, если пользователь не авторизован в текущем сеансе GNOME. Вместо этого рекомендуется использовать более гибкий подход, который может работать как с активными, так и с неактивными пользователями.

3. Создание скрипта для управления сессией

Создайте bash-скрипт, который будет запускаться при подключении по SSH. Создайте файл, например /usr/local/bin/ssh-inhibit.sh:

sudo nano /usr/local/bin/ssh-inhibit.sh

Добавьте в скрипт следующий код:

#!/bin/bash

# Проверка, запущена ли GNOME-сессия для данного пользователя
if [ -n "$DISPLAY" ]; then
    gnome-session-inhibit --inhibit suspend:idle --reason "SSH Session" bash
else
    # В случае, если GNOME не запущен, просто запускаем bash
    exec bash
fi

Сделайте скрипт выполнимым:

sudo chmod +x /usr/local/bin/ssh-inhibit.sh

4. Обновление sshd_config

Теперь измените ForceCommand в sshd_config на следующий вариант:

ForceCommand /usr/local/bin/ssh-inhibit.sh

5. Перезапуск SSH-сервиса

После внесения изменений сохраните файл и перезапустите SSH-сервер:

sudo systemctl restart ssh

6. Проверка настройки

Теперь попробуйте подключиться к вашей системе через SSH и убедитесь, что сеанс не переходит в режим приостановки, если у вас открыта сессия GNOME.

Дополнительно, чтобы регулировать поведение системы при неактивности, вы можете использовать следующие настройки с помощью gsettings:

gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 30

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

Заключение

Используя gnome-session-inhibit и настройку SSH, вы можете предотвратить переход в режим приостановки для активных SSH-сессий, сохраняя удобство работы с вашим сервером. Это решение позволяет сбалансировать использование ресурсов и доступность системы для удалённых пользователей, что особенно важно в средах, где требуется постоянный доступ.

Оцените материал
Добавить комментарий

Капча загружается...