
Я реализую базовый сценарий развертывания, и для 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 обрабатывает дублирующиеся ключевые слова, чтобы я мог переопределить значения по умолчанию.)