Управление ключами пользователей на среднем количестве серверов под управлением GNU/Linux
Собственно имеем мы ну скажем около 100 серверов на которых у нас должен быть определенный набор пользователей, вход у них сугубо по ключам.
Добавление пользователей не вопрос, dsh нам в помощь и одной командой добавляем хоть на всех 100 серверах.
Но вот у нас случилось печальное, по какой-то причине один из наших пользователей сменил свой ключ, неважно, утерял его секретную часть или еще почему, но сменил. Кто может предложить какие варианты централизованного управления?
Первой идей, что пришло в голову это всякие puppet`ы и хранение ключей пользователей не у них в ~, а в /etc/ssh/%user_name и соответственно раскладывание.
Может у кого есть какие еще идеи-варианты? Может кто-то сам уже озадачился подобной проблемой?
Идею пользователей в LDAP и Co и централизованного хранения и доступа с паролем не предлагать, идею NIS+NFS и монтирование ~ по сети из одного места тоже.
Кто мешает через puppet хранить ключ в ~/.ssh/authorized_keys?
У нас так реализовано (правда через chef) — список пользователей, привязанный к ним список ключей и authorized_keys перезаписывается если список изменился.
Проблем никаких — ключ поменялся, ты изменил его для пользователя, изменение разошлось по серверам. Старые ключи при этом потерлись, чтобы был контроль над доступом.
Репазиторий с ключами и сhef/puppet который из него разворачивает ключи на все серваки. + ключи не таскаются за puppet, есть история, кто когда и какой ключ добавил
Есть в природе патч для openssh, который добавляет в конфиг опцию AuthorizedKeysCommand, и позволяет брать ключ не из файла, а из stdout произвольной программы или скрипта. Какие это возможности открывает, надеюсь, объяснять не нужно. В нормальных серверных ОС (RHEL,CentOS,OEL И т.д.) этот патч уже включен в мейнстрим.