Могу ли я перезаписать настройку в sshd_config дублирующей настройкой?

Могу ли я перезаписать настройку в sshd_config дублирующей настройкой?

Я реализую базовый сценарий развертывания, и для sshd_config единственное изменение, которое мне нужно сделать, это PermitRootLogin yes на PermitRootLogin without-password. Я прочитал документацию, и там об этом не упоминается, но это не значит, что это невозможно.

Могу ли я указать второй PermitRootLogin? То есть echo 'PermitRootLogin without-password' >> /etc/ssh/sshd_config

Если да, то безопасно ли это?

Обновления на основе комментариев:

1) Я знаю, что могу разобрать файл и изменить переменную. Но мой вопрос все еще остается.

решение1

Нет.

Вы можете просто проверить это, добавив строку и проверив, можете ли вы войти в систему. Затем вы можете закомментировать первое вхождение, перезапустить службу и снова проверить.

Причина:OpenSSH servconf.cимеет функцию

  • process_server_config_line()на строках 1200-2171 (для 7.9p1)
  • рефакторинг выполнен для вызова process_server_config_line_depth()на строках 1260–2371 (для 8.3p1).

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

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

Пожалуйста, пересмотрите разбор файла. Вы также можете заменить весь файл, если это применимо.

решение2

TL;DR ДаDebian и производные поддерживают ранние включаемые файлы.

ДебианиУбунтуесть Includeдирективы " " в начале sshи sshdфайлы конфигурации:

/etc/ssh/ssh_config:19:Include /etc/ssh/ssh_config.d/*.conf
/etc/ssh/sshd_config:13:Include /etc/ssh/sshd_config.d/*.conf

Я согласен с предыдущими ответами, первое найденное значение имеет приоритет там, где Includeфайлы каталогов обрабатываются первыми.

echo PermitRootLogin without-password > /etc/ssh/sshd_config.d/PermitRootLogin.conf

решение3

Нет, большинство настроек будут использовать только первое значение, которое они встретят; настройка X11Forwarding — это простая настройка для проверки. При этом вы можете воспользоваться настройками переопределения для каждого пользователя, чтобы разрешить то же самое. Обычно они помечены внизу и поэтому будут лучше работать с вашей целью добавления.

Тем не менее, как уже упоминалось, sed был бы гораздо более чистым решением.

sed -i 's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config

решение4

Внесение поправок в предыдущие ответы. На данный моментруководстводляsshd_configФайл начинается с "Для каждого ключевого слова будет использовано первое полученное значение". Таким образом, как уже писали другие, дубликаты игнорируются.

Можно использоватьСоответствоватьблок для переопределения глобальных настроек на основе условия.PermitRootLoginвходит в число ключевых слов, разрешенных в блоке соответствия.

(Я пришел к этому вопросу, поскольку конфигурация sshd по умолчанию в ОС, которую я использую, была изменена на использованиеВключатьдиректива + шаблон glob, перемещающий значения по умолчанию поставщика в отдельный файл. Поэтому важно знать, как sshd обрабатывает дублирующиеся ключевые слова, чтобы я мог переопределить значения по умолчанию.)

Связанный контент