Когда я создаю новые экземпляры Ubuntu 12.10, я обычно загружаю их вручную, устанавливая SSH на машину и редактируя sudoers, чтобы установить NOPASSWD для пользователя по умолчанию (например, ec2-user, azureuser и т. Д.). Затем мои сценарии установки могут выполнять различные команды sudo без необходимости указывать пароль.
Я ничего не имею против паролей. Просто когда я пытаюсь выполнить sudo на основе пароля через SSH с использованием сценария bash, sudo жалуется, что нет tty («sudo: нет tty и не указана программа askpass»).
Кроме того, мне нужно, чтобы это было полностью автоматизировано - это не должно требовать, чтобы кто-то вводил пароль вручную.
Несколько вопросов:
1) Правильный ли подход здесь? В частности, использование NOPASSWD здесь - плохая идея? Я предполагаю, что защита закрытого SSH-ключа пользователя по умолчанию здесь подходит - просто рассматривайте эту учетную запись как учетную запись root.
2) Если это неверно, то как мне преодолеть возражение «нет tty present» без необходимости вручную вводить пароли?
3) Если NOPASSWD в порядке, то как мне автоматизировать редактирование sudoers? Кажется, мне нужно использовать пароль хотя бы для sudo команды visudo.
Думаю, я мог бы проделать всю работу вручную, а затем создать новое изображение, но я бы предпочел просто сохранить базовое изображение, а затем, если это возможно, скрипт для этого материала.
Просто мысль, но почему бы просто не разрешить root-доступ через SSH с аутентификацией на основе ключей, как в PermitRootLogin without-password
.
Если у вас есть потребность в надежной настройке безопасности, вы, безусловно, можете исправить это после завершения базовой установки. Но, на мой взгляд, риск крайне минимален, если иметь доступ на основе ключей к настройке учетной записи root на начальный период начальной загрузки при настройке машины.
3) Если NOPASSWD в порядке, то как мне автоматизировать редактирование sudoers? Кажется, мне нужно использовать пароль хотя бы для sudo команды visudo.
Ubuntu поддерживает includedir /etc/sudoers.d
вариант. Итак, ваша первоначальная настройка очень проста. Просто что-то вроде этого.
echo "adminuser ALL=NOPASSWD: ALL" > /etc/sudoers.d/boostrap
chmod 0400 /etc/sudoers.d/boostrap