Я подключаюсь к одной Linux-машине со стандартной учетной записью и использую sudo, когда необходимо выполнить что-то немного выше моей пользовательской станции.
Одна из таких вещей - выполнить извлечение с помощью git (sudo git pull).
Я хочу настроить аутентификацию на основе ключа между машиной, на которой я нахожусь, и репозиторием git, чтобы не вводить пароль каждый раз.
Мне удалось настроить аутентификацию между моей стандартной учетной записью на машине и репозиторием git, но когда я попытаюсь настроить ее как root, она не будет работать (я выполняю те же задачи, что и для своей обычной учетной записи, но использую sudo each время)
Я предположил, что поскольку sudo запускается от имени пользователя root (sudo whoami возвращает root), генерирует ключи и передает их на другой компьютер, поскольку sudo должен работать так же, как если бы я вошел в систему как root. Я ошибаюсь в своем предположении или есть проблемы с использованием аутентификации на основе ключа в качестве пользователя root на другом компьютере?
Вход по SSH с правами root отключен по умолчанию в большинстве дистрибутивов Linux (см. Ответы Джеймса Лори или Джоши, чтобы узнать, как его включить). Но нет веских причин использовать его IMO. (Кроме того, я не уверен, что понимаю, почему вы хотите быть root при выполнении git pull, но давайте предположим, что вам это действительно нужно ...)
В любом случае, если вы хотите запустить определенную задачу от имени пользователя root без пароля, вам следует настроить sudo, чтобы разрешить именно это. Вам понадобится строка вроде следующей в вашем sudoers
файл:
<username you want to use> ALL=(ALL) NOPASSWD: <command you want to run>
Не забудьте сначала внимательно прочитать man-страницы для sudo и sudoers, а также всегда использовать visudo
отредактировать ваш sudoers
config!
Проверить, если PermitRootLogin
установлен на without-password
в твоем sshd_config и "корень" не в DenyUsers
(или отсутствует в AllowUsers
) список.
Также проверьте разрешения на /root/.ssh
и /root/.ssh/authorized_keys
. Оба должны быть доступны только для "root" (например, иметь маску разрешений 0700
и 0600
).
Проверьте, разрешен ли PermitRootLogin в / etc / ssh / sshd_config