Заметки · 20.02.2026

Permission denied и всё тут

Погоди-погоди, — скажете Вы. — Был же уже пост про root и ssh, буквально вот здесь был.

Соглашусь с Вами. Конечно, тема уже поднималась как в рамках этого сайта, так и за его пределами. Тема вообще стара. Наверное, как и сам ssh в Linux. Но!

Трюк из прошлого поста с добавлением PermitRootLogin yes в файл sshd_config в дистрибутиве отечественной операционной системы РЕД ОС (версия 7.3) — ожидаемого (читать как положительного) результата не дал.

Собственно, вот та самая конструкция, которая должна была бы автоматизировать и тем самым упростить задачу со входом root по ssh:

sudo sed -i '/^PermitRootLogin/d' /etc/ssh/sshd_config && echo "PermitRootLogin yes" | sudo tee -a /etc/ssh/sshd_config

Логика конструкции такова: потоковый редактор sed находит строку, начинающуюся с PermitRootLogin и сразу же удаляет её из конфига. В ходе работы конструкции закомментированная строка с упоминанием PermitRootLogin (если она имеется) останется не тронутой. После успешного внесения изменений в файл конфигурации добавляется строка PermitRootLogin yes.

Команда отработала так, как и ожидалось, но Permission denied продолжал топтаться по терминалу. Подумалось, что сейчас самое время отвлечься и выпить чашечку-другую чая.

Спустя чашечку-другую душистого чая с барбарисом…

Знатно поковырявшись во всех настройках, которые попадались мне на глаза, я всё-таки додумался до и без того очевидного — всё-таки нужно как следует изучить файл конфигурации sshd.

И вот в самом конце файла sshd_config скромно притаилась директива include:

Include /etc/ssh/sshd_config.d/*.conf

Особенность, однако. Иными словами в основной конфиг были включены все файлы конфигураций из директории /etc/ssh/sshd_config.d. Самое время пройти по этому маршруту и взглянуть, что включено в конфигурацию по умолчанию:

cd /etc/ssh/sshd_config.d/

А в основной конфиг включено два файла — 01-permitrootlogin.conf и 50-redos.conf.

Для наглядности — левая панель mc — содержимое директории:

Открываем файл с говорящим названием 01-permitrootlogin.conf (в команде я сократил название файла до 01-*):

sudo nano 01-*

И вот он запрещающий параметр, снабжённый комментарием:

# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
PermitRootLogin no

Данный файл, как следует из текста, был создан во время установки операционной системы. Кстати, установщик операционной системы на этапе сбора информации заботливо предлагает активировать опцию для входа пользователя root по ssh. Это происходит где-то на этом этапе:

Но вернёмся к конфигу. В комментарии нам вообще предлагают его удалить и именно этим методом разрешить доступ для root, так как в файле 50-redos.conf уже присутствует директива PermitRootLogin yes.

Вот только пройти такой путь и закончить историю простым удалением файла — явное предательство читателя. Давайте закомментируем строку:

# This file has been generated by the Anaconda Installer.
# Allow root to log in using ssh. Remove this file to opt-out.
# PermitRootLogin no

Такой способ в дальнейшем упростит нам отключение ssh для root. Потребуется только раскомментировать нужную строку.

Чтобы файл конфигурации перечитался и всё заработало — перезапускаем демона sshd:

sudo systemctl restart sshd

Всё! Теперь мы точно можем входить под root и творить всякое.