Как заставить sshd.service запускаться после network-online.target на Raspbian 12 (bookworm)?

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

Что я пробовал:

  1. Изменение After=network.target на After=network-online.target с помощью systemctl edit --full sshd.service
  2. Создание файла /etc/systemd/system/sshd.service.d/network-online.conf с содержимым
[Unit]
After=network-online.target
  1. Изменение After=network.target на After=network-online.target и добавление Wants=network-online.target с помощью systemctl edit --full sshd.service

Каждый раз, когда sshd.service не удается привязаться к своему IP-адресу, есть одно отличие от третьей попытки: когда я пытался подключиться по ssh к raspberry pi, вместо обычного ‘соединение отклонено’ он возвращал ‘kex_exchange_identification: read: Connection reset by peer’

Моя цель – чтобы мой raspberry pi успешно запускал sshd.service при загрузке.

Я использую raspberry pi 1 b+ с raspbian 12 bookworm и NetworkManager.

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

Для обеспечения корректного старта службы SSH (sshd.service) после достижения состояния network-online.target на Raspbian 12 (Bookworm), важно правильно настроить зависимости системы. Ниже приведены шаги, которые помогут вам добиться желаемого результата.

1. Понимание системы и зависимостей

Обясните важность network-online.target, который гарантирует, что не только сетевое соединение установлено, но и все необходимые сетевые интерфейсы активированы. Это позволяет избежать ошибок при запуске службы SSH, таких как «Connection refused» или «kex_exchange_identification: read: Connection reset by peer».

2. Правильная настройка sshd.service

А можно воспользоваться стандартными инструментами для изменения конфигурации службы sshd.service. Ниже приведены шаги:

Шаг 1: Создание пользовательской настройки единицы

Сначала создайте директорию для пользовательских настроек службы SSH, если она ещё не создана:

sudo mkdir -p /etc/systemd/system/sshd.service.d/

Шаг 2: Создание файла конфигурации

Создайте новый файл конфигурации, который будет переопределять стандартные настройки службы:

sudo nano /etc/systemd/system/sshd.service.d/network-online.conf

Добавьте в файл следующее содержимое:

[Unit]
After=network-online.target
Wants=network-online.target

Эта конфигурация указывает, что служба SSH должна стартовать после достижения состояния network-online.target и требует, чтобы это состояние было достигнуто, прежде чем продолжить.

Шаг 3: Перезагрузка системного демона

Следует перезагрузить демон systemd, чтобы он распознал изменения:

sudo systemctl daemon-reload

3. Проверка конфигурации

Чтобы убедиться, что все изменения применены корректно, проверьте статус службы SSH:

systemctl status sshd.service

И убедитесь, что зависимости установлены правильно:

systemctl show sshd.service | grep After
systemctl show sshd.service | grep Wants

4. Обеспечение успешного запуска службы

Теперь вы можете перезагрузить Raspberry Pi, чтобы проверить, будет ли служба sshd запущена после network-online.target:

sudo reboot

После перезагрузки попытайтесь подключиться к вашему Raspberry Pi через SSH. Если вы всё сделали правильно, служба sshd.service должна запуститься успешно, и вы сможете безопасно подключаться к устройству.

5. Заключение

Если после выполнения всех этих шагов проблема всё ещё сохраняется, возможно, есть дополнительные конфликты с NetworkManager или другими сетевыми сервисами. Всегда полезно проверить логи системного журнала:

journalctl -u sshd.service

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

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

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