Ошибка ‘Не удалось запустить сервер OpenBSD Secure Shell’ после добавления пользователей в секцию PAM

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

Когда я добавляю пользователей в разделе PAM файла sshd_config:

UsePAM yes
Match User employee_1
PasswordAuthentication yes

Я не могу перезапустить SSH-сервис и получаю сообщение ниже (Почему? пожалуйста, помогите):

root@ip-xxxxxxx:/etc/ssh# systemctl status ssh


● ssh.service - OpenBSD Secure Shell server
Loaded: загружен (/lib/systemd/system/ssh.service; включен; предустановка производителя: включена)
   Active: неудачно (Результат: код выхода) с Вт 2019-04-23 18:19:00 UTC; 19s назад
  Process: 895 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (код=вышел, статус=0/УСПЕХ)
  Process: 2183 ExecStartPre=/usr/sbin/sshd -t (код=вышел, статус=255)
 Main PID: 895 (код=вышел, статус=0/УСПЕХ)

Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Контрольный процесс вышел, код=вышел статус=255
Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Не удалось с результатом 'exit-code'.
Apr 23 18:19:00 ip-publicip systemd[1]: Не удалось запустить сервер OpenBSD Secure Shell.
Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Время ожидания обслуживания истекло, назначается перезапуск.
Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Запланирована задача перезапуска, счетчик перезапуска на уровне 5.
Apr 23 18:19:00 ip-publicip systemd[1]: Остановлен сервер OpenBSD Secure Shell.
Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Запрос на запуск повторен слишком быстро.
Apr 23 18:19:00 ip-publicip systemd[1]: ssh.service: Не удалось с результатом 'exit-code'.
Apr 23 18:19:00 ip-publicip systemd[1]: Не удалось запустить сервер OpenBSD Secure Shell.

На самом деле в файле sshd_config нет “разделов”.

В файле по умолчанию UsePAM оказывается последней строкой файла, и поэтому обычно вы увидите блоки Match, сразу следующие за ним. Правила для блоков Match описаны в man sshd_config:

     Match   Вводит условный блок.  Если все критерии на строке
             Match выполнены, ключевые слова на следующих строках
             переопределяют те, что установлены в глобальном разделе файла конфигурации,
             до тех пор, пока не будет встречена другая строка Match или конец файла.  Если ключевое
             слово встречается в нескольких блоках Match, которые удовлетворяют условиям, применяется только
             первый экземпляр ключевого слова.

Как мы выяснили, запустив сервер в режиме отладки с помощью sshd -d, у вас есть как минимум одна дополнительная строка после UsePAM в вашем файле sshd_config, и, поместив свой блок Match перед этой строкой, sshd пытается применить его внутри блока, что не разрешено (обратитесь снова к разделу Match справочной страницы, чтобы увидеть подмножество разрешенных ключевых слов):

/etc/ssh/sshd_config строка 94: Директива 'PrintMotd' не разрешена внутри блока Match

Решение должно быть так же простым, как перемещение вашего блока Match в истинный конец файла.

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

Ошибка "Failed to start OpenBSD Secure Shell server" после добавления пользователей в блок PAM в файле конфигурации sshd_config может быть вызвана неправильной структурой файла конфигурации. Давайте подробно разберем возможные причины проблемы и ее решение.

Анализ проблемы

При добавлении следующих строк в файл sshd_config:

UsePAM yes
Match User employee_1
PasswordAuthentication yes

пользователь сталкивается с ошибкой при попытке перезапустить SSH-сервер. Система сообщает, что служба SSH не может быть запущена из-за ошибки, связанной с выполнением команды sshd -t, которая проверяет корректность конфигурации.

Ошибка при проверке конфигурации

Согласно журналам:

sshd_config line 94: Directive 'PrintMotd' is not allowed within a Match block

это сообщение об ошибке указывает на то, что в конфигурационном файле присутствует директива PrintMotd, которая не разрешена внутри блока Match.

Структура файла sshd_config

Файл sshd_config не имеет настоящих "разделов", но использует директивы и блоки для управления поведением SSH-сервера. Блоки Match служат для переопределения глобальных настроек, когда заданные критерии выполняются. Важно помнить, что если в блоке Match присутствуют директивы, которые не допускаются (например, PrintMotd), это приведет к сбою.

Решение проблемы

Решение заключается в правильном расположении блока Match. Чтобы избежать конфликта между директивами, следует разместить ваш блок Match в самом конце файла, после всех других директив. Таким образом, глобальные настройки будут применяться ко всем пользователям, за исключением тех, для которых определены особые условия в блоке Match.

Пример правильного расположения в файле sshd_config:

UsePAM yes
PrintMotd no
# Другие глобальные настройки ...

# Важно: Блок Match должен быть в конце
Match User employee_1
PasswordAuthentication yes

Заключение

После внесения соответствующих изменений в sshd_config, вы сможете успешно перезапустить SSH-сервер с помощью следующей команды:

sudo systemctl restart ssh

Убедитесь, что проверки конфигурации выполняются корректно, с помощью:

sudo sshd -t

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

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

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