У нас есть десятки серверов Linux и несколько разработчиков, и каждый разработчик покрывает части серверов.
В настоящее время у каждого сервера есть учетная запись администратора, и если кто-то хочет управлять этим сервером, его pubkey будет добавлен в ssh authorized_keys учетной записи администратора сервера, чтобы он мог получить доступ и редактировать этот сервер. Но это не лучшее решение:
Поэтому я думаю, что должно быть лучшее решение:
Если кто-нибудь знает такое решение? Спасибо.
Порт ssh каждого сервера не должен открываться для публики, это опасно.
Это неправда, особенно если вы используете ключи с хорошими парольными фразами и отключили вход по паролю (у вас их не было).
Если к одному серверу обращается несколько человек с одной и той же учетной записью, мы не можем сказать, кто вошел в систему.
В вашем текущем сценарии это правильно - общие учетные записи не хорошая вещь. Однако с подходящей подробные журналы sshd вы можете увидеть, кто и когда входил в систему
Трудно удалить или отозвать чей-то ssh-ключ для этого сервера.
Доступны инструменты, которые позволят автоматизировать это - марионетка, шеф-повар, доступный и т. Д. - инструменты управления конфигурацией в целом.
Общее решение вашей проблемы -
Это позволяет вам регистрировать отдельных пользователей, обращающихся к системе. Имея соответствующее образование, вы также можете регистрировать использование административной учетной записи отдельными пользователями.
Может быть, оформить заказ в Monkeysphere. Он позволяет вам настроить центральный сервер ключей, где вы можете отзывать пользовательские ключи (подумайте об этом как о Web of Trust для ssh-ключей)
Не предоставляйте разработчикам root-доступ на серверах! Используйте какой-нибудь инструмент централизованного управления, такой как chef или cfengine3, и позвольте разработчикам писать шаблоны, которые применяются к серверам. Вы можете отправить эти шаблоны в Git / SVN / Whatever, чтобы отслеживать изменения.
Кроме того, вы можете использовать VPN для доступа к своим серверам. Ваши серверы не обязательно должны быть открыты для всего мира, у них также не обязательно должен быть публичный IP-адрес.