Назад | Перейти на главную страницу

AWS: как запретить cloud-init отключать вход root

На AWS мне удалось создать AMI с модифицированным Ubuntu 12.04 LTS amd64. Я добавил много пакетов и большую часть нашего собственного кода и файлов. Cloud init все еще там, и я уверен, что он должен остаться. Однако это подрывает мою автоматизацию, повторно отключая root во время выполнения после того, как я включил его в исходном томе, который использовался для создания моментального снимка для AMI.

Файл /usr/share/pyshared/cloudinit/CloudConfig/cc_ssh.py, похоже, связан с этим. Поскольку у меня нет опыта программирования на Python, я понятия не имею, какие функции он вызывает, поэтому я не могу понять, что делает весь этот скрипт.

Я мог бы просто добавить какой-нибудь собственный сценарий инициализации для последующего запуска где-нибудь, чтобы просто отменить это и снова включить root. Есть ли способ, стандартизированный или санкционированный облачной инициализацией, для установки флага, указывающего, что отключение входа в систему root не должно выполняться? Или я должен просто откатить свое собственное решение (позже init, чтобы вернуть мой собственный файл /root/.ssh/authorized_keys).

Я также вижу, что этот сценарий удаляет старые ключи хоста и восстанавливает новые. Это то, что я хотел бы сохранить (поэтому мне не нужно будет делать это самому).

У меня также номер порта прослушивания SSH изменен на номер, отличный от 22 (и группа безопасности настроена так, чтобы разрешить доступ к этому порту только с моих собственных IP-адресов). Это не изменилось. Это хорошо.

Код, кажется, проверяет disable_root логическое значение конфигурации, поэтому я предполагаю, что вам нужно установить это в /etc/cloud/cloud.cfg:

disable_root: 0

В /etc/cloud/cloud.cfg есть 2 параметра, относящиеся к ssh. Один блокирует ssh как root, а другой блокирует ssh с использованием пароля. По умолчанию cloud.cfg блокирует как все входы в систему напрямую от имени пользователя root, так и аутентификацию на основе пароля ssh. Это значения по умолчанию:

disable_root: 1
ssh_pwauth:   0

1 для отключения root включает отключение входа в систему root, а 0 для ssh pwauth отключает возможность ssh с использованием пароля. Итак, если вы ХОТИТЕ иметь возможность войти в систему как root и сделать это с паролем, это необходимые настройки:

disable_root: 0
ssh_pwauth:   1

Имейте в виду, что установка ssh_pwauth в 1 разрешает аутентификацию на основе пароля глобально, а НЕ только для root.