Вопрос или проблема
Контекст: 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
.
Диагностика и тестирование
-
Проверка состояния сокета:
- Команда
sudo systemctl status ssh.socket
показала, чтоssh.socket
активен и слушает входящие соединения. Это подтверждает гипотезу о socket-активации.
- Команда
-
Проверка конфигурации:
- Убедитесь, что служба
ssh.service
действительно настроена на socket-активацию. Проверьте наличие конфигурационных файлов/usr/lib/systemd/system/ssh.service
и/usr/lib/systemd/system/ssh.socket
.
- Убедитесь, что служба
Возможные последствия и ограничения
-
Оптимизация ресурсов: Socket-активация позволяет снижать использование ресурсов, так как
sshd
запускается только при необходимости. -
Запуск при загрузке: Если вы хотите, чтобы SSH-сервер запускался автоматически при включении системы без использования socket-активации, это можно настроить следующими шагами:
systemctl enable ssh.service # Включить автоматический старт ssh-сервиса systemctl disable ssh.socket # Выключить управление сокетами systemctl start ssh.service # Запустить ssh-сервис
Эти действия потребуют прав администратора. Используйте sudo
, doas
или другие подходящие способы выполнения команд от имени суперпользователя.
Заключение
Статус «disabled» не указывает на ошибку; он отражает стратегию конфигурации, направленную на оптимизацию. Вы можете оставить конфигурацию как есть, если она устраивает вас, или перейти на традиционный режим работы службы, если это соответствует вашим требованиям.
Обдуманное решение позволит вам максимально эффективно использовать ресурсы Raspberry Pi 3B+, обеспечивая необходимый уровень доступности SSH-сервера.