pssh pode ser o que você está procurando
Eu gostaria de alterar a senha do root em cerca de 20 servidores Linux. Principalmente CentOS e Ubuntu.
Então eu olhei para Puppet, chef e cfengine, mas eu não posso dizer se eles podem fazer isso, ou se eles matariam demais para a tarefa?
Alguém tem recomendações sobre como editar arquivos de configuração, /etc/shadow
entre outros, em muitos servidores Linux?
pssh pode ser o que você está procurando
Você pode simplesmente executar o comando usermod -p '_hash_' root
, em que hash é o hash da senha apropriada para esse sistema. Então um comando como usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root
faria o root ter uma senha de password
.
Se você quiser fazer isso da maneira correta, você também geraria um sal exclusivo e um hash exclusivo para cada sistema. Se estiver instalado, você pode usar mkpasswd
para essa finalidade.
$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/
PS Pessoalmente, prefiro configurar o root para ter uma senha desativada e, em seguida, usar a autenticação baseada em chave ssh para qualquer acesso à conta root. Você deve conseguir criar um script para facilitar a atualização do arquivo root authorized_keys
. Dependendo do seu nível de log SSH, você também verá qual tecla foi usada para acessar a conta root, isso pode ser útil para rastrear quem quebrou algo.
Você não faz. Não, não edite diretamente o / etc / shadow. Para 20 servidores, eu provavelmente apenas logaria e mudaria a senha do root com o passwd.
o que você pode fazer se tiver que fazer isso com frequência é usar Espere e coloque em um loop como :
for i in 'cat <file_with_server_names>'
do
ssh <user>@$i
<expect stuff here>
done
Desculpe pelo código psuedo frágil que não usei em cerca de 6 meses.
root é complicado, pessoalmente eu não gosto de vinculá-lo a qualquer serviço externo como um plano de fallback caso a rede / serviço esteja inoperante. Normalmente eu teria sugerido integração LDAP ou AD (se você já tinha um domínio AD!)
O Puppet pode gerenciar usuários (e uma infinidade de outras coisas). Eu recomendo calorosamente qualquer administrador com mais de 3 servidores integrando fantoche em seu ambiente. O wiki em puppetlabs.com tem muitos artigos que ajudarão você a começar a trabalhar rapidamente. As vantagens definitivamente valem o seu tempo. Considere escrever este trecho de código uma vez:
User {"sandra":
ensure => present,
group => ["sysadmin","dba"]
}
... e tê-lo aplicado em muitos servidores dentro de um determinado período de tempo.
E sim, não edite seu arquivo shadow manualmente:)
Também existem pacotes como o cluster-ssh, mas na minha experiência, embora útil, o fluxo de trabalho com esse tipo de software torna-se desconfortável com mais de 3-4 servidores - isso é apenas um sábio na tela. Eu não estou nem falando sobre vários problemas que surgirão devido a diferenças nos layouts do sistema de arquivos do servidor (digamos tchau para conclusão da tabulação), pacotes instalados, etc
Se você tiver a troca de chaves ssh estabelecida para todos os sistemas, consideraria um loop básico para ssh em cada sistema e atualizaria a senha. Caso contrário, pode fazer mais sentido apenas ssh para cada sistema individualmente e alterar a senha. 20 sistemas não são um número tão grande.
Dê uma olhada em sshpass . Você pode fazê-lo fazendo um loop através de uma matriz associativa com a chave é o endereço IP e o valor é a senha correspondente.
A senha pode ser alterada com:
passwd <<EOF
ch4ng#m3
ch4ng#m3
EOF
Você deve limpar o histórico depois de fazer isso.