У меня есть несколько удаленных разработчиков и несколько серверов на EC2. Есть ли способ централизованно управлять файлом authorized_keys на EC2, вместо того, чтобы добавлять ключи вручную на каждом сервере?
Один из вариантов - установить крошечный экземпляр, вы предоставляете всем своим разработчикам доступ к этой машине. Они подключены к нему по SSH, и у машины есть авторизованный ключ ssh, который позволяет им получить доступ ко всем остальным машинам. Затем вы можете использовать брандмауэры на машинах, чтобы предотвратить вход по SSH с других IP-адресов.
Другой вариант - установить что-то вроде Puppet, который сможет управлять файлом authorized_keys за вас.
Еще один вариант - настроить сценарий для синхронизации файла authorized_key со всеми хостами при его изменении на одной машине. Вы можете использовать что-то вроде lsyncd, чтобы автоматизировать это.
Имейте в виду, что только то, что вы отозвали SSH-ключ разработчиков, не означает, что вы удалили любой доступ, который они могли иметь к этой машине. Злоумышленник с доступом по SSH может настроить что-то вроде обратной оболочки или добавить различные типы бэкдоров в код, над которым они работают.
В итоге я добавил обратно парольную аутентификацию в SSH, чтобы я мог просто управлять им с помощью имени пользователя и паролей на сервере. Было бы интересно посмотреть, как к этому подошли другие люди.
Ты можешь использовать LDAP, но вам нужно будет применить патч OpenSSH и собрать его самостоятельно. Но вы также получаете централизованное управление учетной записью.
Если вам удастся настроить базовый образ для использования себя в качестве клиента Puppet, вы можете использовать директива ssh_authorized_keyили даже управлять файлом шаблона напрямую, используя тип файла и помещая его в .ssh/authorized_keys
файл.
Puppet также включает в себя утилиты для управления подготовкой через EC2, так что вы действительно можете сделать все это в одном месте.
Довольно сложно управлять ключами к SSH в экземплярах, и я не могу найти простых решений. Программное обеспечение для управления облаком, такое как RightScale и Скалер, реши такого рода проблемы. Scalr предоставляет SSH-доступ одним щелчком мыши к любому из ваших экземпляров с использованием безопасного доступа к ключу и позволяет повторно загружать ключи, если вы их потеряете. Scalr имеет открытый исходный код или доступен в Интернете через размещенную версию.
PS: Я работаю в Scalr
Userify.com управляет учетными записями пользователей, ключами SSH и ролями sudo.
Довольно легко развернуть с использованием пользовательских данных AWS (на вкладке «Дополнительно» при запуске экземпляра) или вставить его прямо в сценарий UserData для группы автомасштабирования или всякий раз, когда вы запускаете экземпляр вручную, что здорово, потому что оно работает еще до того, как вы войдите в систему. (Или вы можете просто вставить однострочник в консоль сервера, но это не так весело ..)
Он также поддерживает Chef и тому подобное, и каждый пользователь (разработчик / администратор / и т. Д.) Получает свой собственный веб-логин для обновления ключей. Это довольно безболезненно.