Я пытаюсь автоматически отключить ведение журнала в SSH через root. Я знаю, что могу вручную отредактировать файл и сделать это, но я хочу отключить регистрацию root через скрипт Bash (который я использую для инициализации моих серверов).sed match и заменить в файле, за исключением комментариев
Я не использовал sed
много, но я думаю, что это то, что я должен использовать на основе this question.
Линия, которую я пытаюсь заменить, в /etc/ssh/sshd_config
, является PermitRootLogin {any_value}
. Значение по умолчанию {any_value}
равно yes
, но я хотел бы, чтобы это работало для любого значения (в той же строке).
Я пробовал команду sudo sed -i "/PermitRootLogin/c\PermitRootLogin no" /etc/ssh/sshd_config
, но это также заменяет случайный комментарий, который содержит текст «PermitRootLogin».
Итак, я не хочу заменять строки, начинающиеся с токена комментария, #
.
Вот соответствующие части файла я пытаюсь изменить (мои комментарии будут добавлены с «###»):
# Authentication:
LoginGraceTime 120
PermitRootLogin yes ### I want to replace this line with "PermitRootLogin no"
StrictModes yes
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
Ожидаемый результат:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
Тогда , Я пробовал это: sed -i "\(^[\# ]\)+/PermitRootLogin/c\PermitRootLogin no" /etc/ssh/sshd_config
.
Это дает мне ошибку: sed: -e expression #1, char 48: unterminated address regex
.
Как я могу выполнить то, что я пытаюсь сделать? Спасибо!
... и ожидаемый результат. –