Я хотел бы изменить пароль root примерно на 20 серверах Linux. В основном CentOS и Ubuntu.
Итак, я посмотрел на Puppet, Chef и cfengine, но я не могу сказать, могут ли они это сделать, или они будут слишком убивать для этой задачи?
Есть ли у кого-нибудь рекомендации, как редактировать файлы конфигурации, /etc/shadow
среди прочего, на многих серверах Linux?
Вы можете просто запустить команду usermod -p '_hash_' root
где хэш - это хэш пароля, подходящий для этой системы. Итак, такая команда, как usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root
сделал бы root пароль password
.
Если вы хотите сделать это правильно, вы также должны сгенерировать уникальную соль и уникальный хэш для каждой системы. Если он установлен, вы можете использовать mkpasswd
для этого.
$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/
PS Лично я предпочитаю установить для root отключенный пароль, а затем использовать аутентификацию на основе ключа ssh для любого доступа к учетной записи root. Вы сможете довольно легко создать сценарий для автоматизации обновления корневого каталога. authorized_keys
файл. В зависимости от вашего уровня журнала SSH вы также увидите, какой ключ использовался для доступа к учетной записи root, это может быть полезно для отслеживания того, кто что-то сломал.
Puppet может управлять пользователями (и множеством других вещей). Я настоятельно рекомендую любому администратору с более чем 3 серверами, интегрирующими марионетку в свою среду. В вики на сайте puppetlabs.com есть много статей, которые помогут вам быстро начать работу. Преимущества определенно стоят вашего времени. Подумайте о написании этого фрагмента кода один раз:
User {"sandra":
ensure => present,
group => ["sysadmin","dba"]
}
... и применить его на многих серверах в течение определенного периода времени.
И да, не редактируйте файл теней вручную :)
Существуют также такие пакеты, как cluster-ssh, но, по моему опыту, хотя и полезен, рабочий процесс с этим типом программного обеспечения становится неудобным с более чем 3-4 серверами - это просто с точки зрения площади экрана. Я даже не говорю о различных проблемах, которые могут возникнуть из-за различий в компоновке файловой системы сервера (скажем, до свидания с завершением вкладки), установленных пакетов и т. Д.
Вы этого не сделаете. Нет, правда, не редактируйте напрямую / etc / shadow. Для 20 серверов я бы, вероятно, просто зашел в систему и сменил пароль root с помощью passwd.
что вы можете сделать, если вам приходится делать это часто, это использовать Ожидать и поместите его в цикл, например:
for i in `cat <file_with_server_names>`
do
ssh <user>@$i
<expect stuff here>
done
Извините за ненадежный псевдокод, который я не использовал примерно 6 месяцев.
root - непростой вопрос, лично мне не нравится привязывать его к каким-либо внешним службам в качестве запасного варианта на случай, если сеть / служба не работают. Обычно я бы предложил интеграцию LDAP или AD (если бы у вас уже был домен AD!)
пшш может быть то, что вы ищете
Если у вас установлен обмен ключами ssh для всех систем, я бы рассмотрел простой цикл для ssh для каждой системы и обновил пароль. Если нет, может иметь смысл просто использовать ssh для каждой системы индивидуально и изменить пароль. 20 систем - это не так уж и много.
Взгляни на sshpass. Вы можете сделать это, перебирая ассоциативный массив с ключом - IP-адресом, а значением - соответствующим паролем.
Пароль можно изменить с помощью:
passwd <<EOF
ch4ng#m3
ch4ng#m3
EOF
После этого вы должны очистить историю.