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