Главная
» LINUX
»
Как включить вход по SSH с правами root в Linux с помощью SSH-ключей
Как включить вход по SSH с правами root в Linux с помощью SSH-ключей
Включите вход по SSH от имени root с помощью открытого ключа, добавив его в файл конфигурации root authorized_keys, установив параметр , проверив конфигурацию OpenSSH и перезагрузив службу. Это позволит root входить по ключу, блокируя при этом аутентификацию по паролю и интерактивную клавиатурную аутентификацию. См. руководство по sshd_configPermitRootLogin prohibit-password в OpenSSH для определения параметров.
На этом изображении терминала показано приглашение к подтверждению доверия; перед его принятием проверьте фактический отпечаток хоста по доверенному каналу.
Прямой доступ с правами root предоставляет принятому ключу неограниченный контроль. Используйте его только в системе, которой вы управляете, и предпочтительно за частной сетью или брандмауэром. Для обычной работы войдите в систему как именованный пользователь и используйте команду `ssh` sudo. Держите текущую сессию открытой и убедитесь, что у вас есть другой путь восстановления, прежде чем изменять настройки удаленного SSH.
Перед редактированием SSH-сервера
Подключитесь к системе с помощью учетной записи, которая может запускать sudoOpenSSH Server, и убедитесь, что он запущен.
Подготовьте пару SSH-ключей для клиента. Скопируйте открытый ключ (обычно это файл с расширением .pub); никогда не передавайте закрытый ключ третьим лицам.
Не следует устанавливать пароль root исключительно для SSH-доступа по ключу. Заблокированный пароль и доступ по открытому ключу — это разные вещи, хотя политики учетных записей дистрибутива могут влиять на вход в систему. В руководстве по управлению пользователями Ubuntu объясняется, что блокировка пароля сама по себе не отключает доступ по существующим SSH-ключам.
Включить вход по SSH с правами root на основе ключей.
1. Подключитесь как обычный администратор.
В терминале на вашем клиентском компьютере подключитесь к учетной записи, которая уже имеет права sudo:
ssh admin@server.example.com
Замените примерные значения. Перед принятием проверьте отпечаток нового ключа хоста по доверенному каналу.
2. Добавьте свой открытый ключ в учетную запись root.
На сервере создайте для пользователя root каталог SSH с ограниченными правами доступа, затем отредактируйте список авторизованных ключей:
Вставьте полный открытый ключ в одну строку и сохраните. Никогда не вставляйте закрытый ключ и сохраните все существующие записи. Затем ограничьте права собственности и разрешения:
Добавьте полный открытый ключ одной строкой в файл authorized_keys пользователя root; показанный здесь сокращенный ключ является лишь визуальным заменителем.
3. Настройте политику авторизации для пользователя root.
Откройте конфигурацию сервера с помощью текстового редактора, например:
sudoedit /etc/ssh/sshd_config
Найдите активную PermitRootLoginдирективу и измените её на:
PermitRootLogin prohibit-password
Это безопаснее, чем PermitRootLogin yes, который может разрешать использование паролей root. Не добавляйте повторяющуюся директиву: OpenSSH использует первое полученное значение, и дистрибутивы могут загружать Includeфайлы. Отредактируйте активную настройку и оставьте несвязанные параметры аутентификации без изменений.
Выделенная строка управляет правами root; остальные параметры аутентификации являются отдельными настройками и должны соответствовать вашей политике.
4. Перед применением проверьте конфигурацию.
Сначала проверьте наличие синтаксических ошибок:
sudo sshd -t
Отсутствие вывода означает, что проверка синтаксиса пройдена успешно. Исправьте все обнаруженные ошибки перед перезагрузкой. Проверьте фактическое значение с помощью:
sudo sshd -T | grep permitrootlogin
Убедитесь, что в выводе указано permitrootlogin prohibit-password. Если нет, проверьте включенные файлы и соответствующие Matchблоки. В руководстве по sshd это определяется -tкак проверка синтаксиса и -Tкак отчет об эффективной конфигурации.
Перед применением изменений выполните команду sshd -t, затем проверьте действующие настройки входа в систему от имени root.
5. Перезагрузите службу SSH.
Используйте имя службы вашего дистрибутива. В Ubuntu и Debian обычно используется:
sudo systemctl reload ssh.service
Fedora, RHEL и многие другие дистрибутивы обычно используют:
sudo systemctl reload sshd.service
Если функция перезагрузки не поддерживается, используйте systemctl restartсоответствующее имя службы и оставьте исходную сессию открытой. В руководстве по OpenSSH в Ubuntu также рекомендуется запустить эту команду sshd -tперед перезапуском.
После того, как конфигурация пройдет проверку синтаксиса, перезагрузите демон SSH; имена служб различаются в зависимости от дистрибутива.
6. Проверьте доступ с правами root со второго терминала.
Откройте отдельный терминал на клиентском компьютере и укажите закрытый ключ, соответствующий установленному вами открытому ключу:
ssh -i ~/.ssh/id_ed25519 root@server.example.com
Замените путь к ключу и имя хоста. Проверьте наличие запроса на ввод ключа хоста и убедитесь, что сессия открывается от имени root. Если проверка не удалась, выполните поиск и устранение неисправностей в исходной сессии и оставьте ее открытой до восстановления доступа.
Перед закрытием сеанса администратора проведите тестирование на новом клиентском терминале, используя соответствующий закрытый ключ.
Устранение неполадок, связанных с отказом в доступе к системе от имени root.
Для этого Permission denied (publickey)убедитесь, что полный открытый ключ находится в папке /root/.ssh/authorized_keysи клиент использует соответствующий ему закрытый ключ. Перепроверьте права собственности и разрешения:
Также проверьте фактическое PermitRootLoginзначение, правила AllowUsers/ DenyUsers, журналы сервера и оболочку входа root. Избегайте изменения параметра в yesкачестве ярлыка; это может расширить список разрешенных методов аутентификации для root.
Каталог SSH, доступный пользователю root, должен принадлежать пользователю root, с правами доступа 700 для самого каталога и 600 для файла authorized_keys.
Отключайте вход по SSH от имени root, когда он вам больше не нужен.
Чтобы отключить прямой доступ по SSH от имени root, измените директиву active следующим образом:
PermitRootLogin no
Запустите sudo sshd -tи перезагрузите нужную службу. Это заблокирует прямой SSH-доступ от имени root, но оставит доступной учетную запись администратора. Одной лишь блокировки паролем может быть недостаточно для блокировки входа в систему с помощью открытого ключа root.
Установите для параметра PermitRootLogin значение «нет», выполните проверку и перезагрузите страницу. Другие отображаемые параметры аутентификации являются отдельными и не требуются для этого изменения, предназначенного только для root-прав.