Есть ли способ создать узлы из облачной формации, которые могут подключаться друг к другу по ssh без паролей?

Я создаю шаблон формирования облака AWS, который устанавливает набор узлов, которые должны разрешать вход в систему без ключа ssh между собой. т. е. один контроллер должен иметь возможность входа на все подчиненные устройства с помощью своего закрытого ключа. Закрытый ключ контроллера генерируется динамически, поэтому у меня нет доступа, чтобы жестко закодировать его в пользовательские данные шаблона или передать его в качестве параметра шаблону.

Есть ли способ в шаблонах Cloud Formation добавить открытый ключ контроллера в файлы авторизованных ключей подчиненных узлов?

Есть ли другой способ использовать группы безопасности или IAMS для выполнения необходимых действий?


person Usman Ismail    schedule 12.04.2014    source источник


Ответы (2)


Вы должны передать открытый ключ главного сервера подчиненным узлам в форме user-data. Cloudformation поддерживает пользовательские данные. Возможно, вам придется выяснить синтаксис для того же самого.

Другими словами, рассмотрите это как простой сценарий bash, который скопирует открытый ключ главных серверов на подчиненные. а затем вы передаете этот скрипт bash как suer-data, чтобы он выполнялся в первый раз, когда создается экземпляр.

Вы найдете множество поисковых запросов по приведенной выше информации.

person slayedbylucifer    schedule 13.04.2014
comment
Я знаю о пользовательских данных, но поскольку пара ключей генерируется на контроллере после его загрузки, ее нельзя жестко закодировать в пользовательских данных. - person Usman Ismail; 14.04.2014

Я бы подошел к этой проблеме с ролями машины IAM. Вы можете предоставить определенным машинам определенные права AWS. Роли IAM применяются не к доступу по ssh, а к вызовам API AWS, таким как доступ к корзине s3 или создание экземпляров ec2.

Таким образом, решение может выглядеть так:

  1. Создайте роль контроллера, которая может записывать данные в конкретную корзину S3.
  2. Создайте роль ведомой машины, которая может читать из этого сегмента.
  3. Попросите контроллер создать загрузку открытого ключа в корзину.
  4. Поскольку вы не знаете, создан ли контроллер раньше ведомых, вам нужно настроить cloud-init задание cron каждые пару минут, которое загружает ключ из корзины, если он еще этого не сделал.
person Liyan Chang    schedule 30.11.2014