Quero adicionar um ou mais novos usuários com suas chaves públicas em vários hosts (onde tenho ssh root sem senha). Claro que posso fazer isso manualmente. Tem como fazer isso aromaticamente?
Responder1
Existem muitas maneiras de fazer isso programaticamente. Eu escrevi scripts para enviar usuários e credenciais/chaves de um servidor de controle para outros sistemas sob demanda, e softwares de automação como Puppet, Chef e CFEngine também fazem isso usando um mecanismo pull.
Você provavelmente também poderia vinculá-lo ao LDAP. (https://serverfault.com/questions/653792/ssh-key-authentication-using-ldap#653793)
Responder2
init-user-on-host() # <username> <id_rsa.pub file> <remote host>
{
cat $2 | ssh root@$3 \
"set -x; adduser --quiet --gecos '' --disabled-password $1;" \
" su -l $1 -c 'mkdir -p .ssh;" \
"cat >> .ssh/authorized_keys;" \
"ls -RA; cat .ssh/authorized_keys' "
ssh $1@$3 echo OK
}
init-users-on-hosts()
{
for u in $users; do
for h in $hosts; do
init-user-on-host $u $u.id_rsa.pub $h
done
done
}