Статус сервера SSH показывает отключено.

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

Контекст: 64-битный Ubuntu Server 24.04 на Raspberry Pi 3B+

sudo systemctl status ssh

Результаты после перезапуска ssh-сервера. Почему вторая строка указывает на отключение? Как диагностировать/проверить? Какие ограничения это накладывает?

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
     Active: active (running) since Wed 2025-01-08 07:35:43 UTC; 8h ago
TriggeredBy: ● ssh.socket
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 1584 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
   Main PID: 1586 (sshd)
      Tasks: 1 (limit: 853)
     Memory: 1.1M (peak: 2.9M)
        CPU: 303ms
     CGroup: /system.slice/ssh.service
             └─1586 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Jan 08 07:35:43 rpi3mqtt systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
Jan 08 07:35:43 rpi3mqtt sshd[1586]: Server listening on :: port 22.
Jan 08 07:35:43 rpi3mqtt systemd[1]: Started ssh.service - OpenBSD Secure Shell server.
Jan 08 14:48:16 rpi3mqtt sshd[2411]: Connection closed by authenticating user ubuntu 192.168.8.242 port 64789 [preauth]

Запрос по ChrisDavies:

sudo systemctl status ssh.socket

● ssh.socket - OpenBSD Secure Shell server socket
     Loaded: loaded (/usr/lib/systemd/system/ssh.socket; enabled; preset: enabled)
     Active: active (running) since Wed 2025-01-08 19:03:57 UTC; 2h 36min ago
   Triggers: ● ssh.service
     Listen: [::]:22 (Stream)
      Tasks: 0 (limit: 853)
     Memory: 8.0K (peak: 256.0K)
        CPU: 3ms
     CGroup: /system.slice/ssh.socket

Jan 08 19:03:57 rpi3mqtt systemd[1]: Listening on ssh.socket - OpenBSD Secure Shell server socket.

Служба отключена, поэтому она не будет запускаться при загрузке, но в данный момент она запущена и доступна.

Как отмечено в комментарии от @telcoM, запись TriggeredBy: ● ssh.socket указывает на то, что служба SSH могла быть настроена для активации при подключении, т.е. systemd будет держать сокет для TCP порта 22 и запускать реальный sshd, когда поступит входящее соединение, и передавать его. (По сути, аналогично более старым inetd или xinetd.)

В этой ситуации ssh.service будет отключен, но ssh.socket будет включен, и это соответствует вашему сценарию.

Или вы можете вернуться к простому использованию ssh.service:

systemctl enable ssh.service    # Включить автоматический запуск службы ssh
systemctl disable ssh.socket    # Отключить службу управления сокетом
systemctl start ssh.service     # Запустить службу ssh

(Для выполнения этих системных административных команд потребуются привилегии root. Это может быть с использованием sudo, doas, su или каким-то другим методом.)

Почему система может быть настроена на использование ssh.socket? В первую очередь, для экономии ресурсов, избегая запуска демона sshd, если он не требуется.

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

Почему статус SSH-сервера показывает «disabled» на Ubuntu Server 24.04

Контекст: Вы используете 64-битную версию Ubuntu Server 24.04 на Raspberry Pi 3B+. При выполнении команды sudo systemctl status ssh, вы замечаете, что вторая строка выводит статус «disabled». Давайте разберемся, что это означает, как это диагностировать и каковы возможные последствия.

Почему статус «disabled»?

В вашем случае служба ssh.service показывает «disabled», что означает, что служба не будет запускаться автоматически при старту системы. Однако она активно работает в данный момент, что указывает на использование socket-активации:

  • Запись <code>TriggeredBy: ● ssh.socket</code> показывает, что SSH может быть сконфигурирован для активации через сокет. Это значит, что systemd слушает порт TCP 22 и запускает sshd, когда поступает входящее соединение, затем передает это соединение службе. Такое поведение похоже на старые демоны inetd или xinetd.

Диагностика и тестирование

  1. Проверка состояния сокета:

    • Команда sudo systemctl status ssh.socket показала, что ssh.socket активен и слушает входящие соединения. Это подтверждает гипотезу о socket-активации.
  2. Проверка конфигурации:

    • Убедитесь, что служба ssh.service действительно настроена на socket-активацию. Проверьте наличие конфигурационных файлов /usr/lib/systemd/system/ssh.service и /usr/lib/systemd/system/ssh.socket.

Возможные последствия и ограничения

  1. Оптимизация ресурсов: Socket-активация позволяет снижать использование ресурсов, так как sshd запускается только при необходимости.

  2. Запуск при загрузке: Если вы хотите, чтобы SSH-сервер запускался автоматически при включении системы без использования socket-активации, это можно настроить следующими шагами:

    systemctl enable ssh.service    # Включить автоматический старт ssh-сервиса
    systemctl disable ssh.socket    # Выключить управление сокетами
    systemctl start ssh.service     # Запустить ssh-сервис

Эти действия потребуют прав администратора. Используйте sudo, doas или другие подходящие способы выполнения команд от имени суперпользователя.

Заключение

Статус «disabled» не указывает на ошибку; он отражает стратегию конфигурации, направленную на оптимизацию. Вы можете оставить конфигурацию как есть, если она устраивает вас, или перейти на традиционный режим работы службы, если это соответствует вашим требованиям.

Обдуманное решение позволит вам максимально эффективно использовать ресурсы Raspberry Pi 3B+, обеспечивая необходимый уровень доступности SSH-сервера.

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

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