- Вопрос или проблема
- Ответ или решение
- 1. Понимание системы и зависимостей
- 2. Правильная настройка sshd.service
- Шаг 1: Создание пользовательской настройки единицы
- Шаг 2: Создание файла конфигурации
- Шаг 3: Перезагрузка системного демона
- 3. Проверка конфигурации
- 4. Обеспечение успешного запуска службы
- 5. Заключение
Вопрос или проблема
Что я пробовал:
- Изменение
After=network.target
наAfter=network-online.target
с помощьюsystemctl edit --full sshd.service
- Создание файла
/etc/systemd/system/sshd.service.d/network-online.conf
с содержимым
[Unit]
After=network-online.target
- Изменение
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.