Я настроил .ssh / authorized_keys и могу войти в систему с новым "пользователем", используя pub / private ключ ... Я также добавил "user" в список sudoers ... проблема, которая у меня сейчас возникает, когда Я пытаюсь выполнить команду sudo, например:
$ sudo cd /root
мне будет предложено ввести пароль, который я ввожу, но он не работает (я использую пароль, который я установил)
Кроме того, я отключил пароль пользователя с помощью
$ passwd -l user
Что мне не хватает?
Где-то мои первоначальные замечания были неправильно поняты ...
Я пытаюсь укрепить свою систему ... конечная цель - использовать публичные / закрытые ключи для входа в систему вместо простой аутентификации по паролю. Я разобрался, как все это настроить с помощью файла authorized_keys.
Кроме того, в конечном итоге я буду предотвращать вход на сервер через учетную запись root. Но прежде чем сделать это, мне нужно, чтобы sudo работал для второго пользователя (пользователя, который будет постоянно входить в систему).
Для этого второго пользователя я хочу запретить регулярные входы в систему с паролем и принудительно входить только в паб / закрытый ключ, если я не блокирую пользователя с помощью "passwd -l user ... тогда, если я не использую ключ, я все еще могу попасть на сервер с обычным паролем.
Но что более важно, мне нужно заставить sudo работать с настройкой паб / закрытый ключ с пользователем, у которого его / ее пароль отключен.
Редактировать: ОК, я думаю, что у меня есть (решение):
1) Я настроил / etc / ssh / sshd_config и установил PasswordAuthentication no
Это предотвратит вход в систему с паролем ssh (убедитесь, что перед этим настроена работающая настройка открытого / закрытого ключа).
2) Я настроил список sudoers visudo
и добавил
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root - единственная учетная запись пользователя, которая будет иметь пароль, я тестирую с двумя учетными записями пользователей "dimas" и "sherry", у которых не установлен пароль (пароли пустые passwd -d user
)
Вышесказанное, по сути, запрещает всем входить в систему с паролями (необходимо установить открытый / закрытый ключ).
Кроме того, пользователи в списке sudoers имеют права администратора. Они могут также su
на разные аккаунты. Таким образом, в основном «dimas» может sudo su sherry
, однако «dimas НЕ МОЖЕТ сделать su sherry
. Точно так же любой пользователь НЕ в списке sudoers НЕ МОЖЕТ сделать su user
или sudo su user
.
ПРИМЕЧАНИЕ Вышеуказанное работает, но считается плохим. Любой сценарий, который может получить доступ к коду как "dimas" или "sherry" пользователи, сможет выполнить sudo для получения root-доступа. Ошибка в ssh, которая позволяет удаленным пользователям входить в систему, несмотря на настройки, удаленное выполнение кода в чем-то вроде Firefox или любой другой недостаток, который позволяет запускать нежелательный код, поскольку пользователь теперь может запускаться от имени пользователя root. Sudo всегда должен требовать пароль, иначе вы можете войти в систему как пользователь root, а не какой-либо другой пользователь.
passwd -l
удаляет пароль в том смысле, что учетная запись заблокирована - то есть пароль не будет работать. Вы хотите отключить аутентификацию по паролю в sudo.То, что вы хотите сделать, возможно, но это потребует некоторого опыта, так как вам нужно будет скомпилировать модуль PAM с именем pam-ssh-agent-auth .
Процесс достаточно прост:
Редактирование конфигурации sudo:
Добавьте следующее:
Продолжите, изменив настройки sudo PAM:
Добавьте (чуть выше строк @include):
источник
/etc/pam.d/sudo
инструкции) устарели для текущих версий Ubuntu. Я предоставил обновленные инструкции в своем ответе.Ответ Андре де Миранды дает хорошее решение с использованием pam_ssh_agent_auth , но некоторые части устарели. В частности,
/etc/pam.d/sudo
инструкции при использовании многих текущих версий Linux.Если вы используете Ubuntu 12.04, я упростил процесс, предоставив сборку pam_ssh_agent_auth из ppa: ppa: cpick / pam-ssh-agent-auth .
Вы можете установить пакет, запустив:
После установки, если вы хотите использовать этот модуль PAM с sudo, вам нужно будет настроить параметры sudo и конфигурацию PAM, в Ubuntu 12.04, точнее, вы можете сделать это, создав следующие два файла:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Если вы используете chef, описанный выше процесс можно автоматизировать с помощью моей кулинарной книги, которую можно найти в любом из двух следующих мест:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / cookbooks / pam-ssh-agent-auth .
files
Каталог поваренной книги содержит описанные выше файлы/etc/pam.d/sudo
и/etc/sudoers.d/pam-ssh-agent-auth
файлы, которые работают с Ubuntu 12.04 точно, и должны быть полезной отправной точкой при использовании других версий / дистрибутивов.источник
Единственный известный мне способ обойти ввод пароля - это отключить его в своем
sudoers
файле.Нечто подобное даст
root
и всем участникамwheel
полный доступ без пароля:Это абсолютно не рекомендуется , однако. Если у вас есть конкретная команда для выполнения этого сервера, предоставьте им доступ только к этой команде. Или, еще лучше, найдите другой способ выполнить то, что вы хотите сделать, который не требует пробить дыру в безопасности.
источник