SSH + Alterar senha usando raiz

1

Estou tentando conectar-me a vários servidores para alterar a senha de um usuário específico.

Espero que você possa me ajudar a construir um script para fazer isso, a complexidade é que eu tenho que usar o sudo e enviar a senha para conectar no servidor remoto como root.

Estou tentando algo assim, mas não está funcionando:

sshpass -p pass ssh user@server << EOF
  echo pass | sudo -S -u root "echo 'user2:pass2' | chpasswd"
EOF

Para explicar melhor o que quero fazer, estas são as etapas que preciso fazer:

  1. conecte-se a um servidor com meu usuário.
  2. usando "sudo" para se conectar como root.
  3. execute "echo 'user2: pass2' | chpasswd" para alterar a senha do usuário2.

Este é o erro:

Pseudo-terminal will not be allocated because stdin is not a terminal. stat: cannot stat 'pipe:[2670580091]': No such file or directory [sudo] password for user1: sudo: echo 'user2:XXXXXXX' | chpasswd: command not found

    
por Jose 08.01.2018 / 23:03

3 respostas

0

Eu executei as coisas como root sobre o ssh usando:

ssh -t  you@server <<EOF 
  echo pass_for_you | sudo -S bash -c "commands to do as root";   
EOF 
    
por 09.01.2018 / 15:37
0

isso ajudaria? ou algo similar? assumindo que entendi o que você está tentando fazer?

for i in server{1,2,3}; do
   ssh -t user@$i 'sudo passwd user2'
done
    
por 09.01.2018 / 00:09
0

O ansible module "user" deve funcionar para o seu problema. Mas você precisa fornecer o hash de senha já criptografado. Faça o hash com:

mkpasswd --method=sha-512

Execute um comando adhoc ansible como este com a hash-string gerada entre aspas:

ansible -v all -i <hostname>, --become --extra-vars 'ansible_become_pass=<sudo password> ansible_password=<sudo password>' --user=<ssh user> -k -m user --args='name=root update_password=always password="$6$IZjuXoio1$zHpQQDZGDPwG8mr2R6Mrt1C8Nqstui75enT/o0oSVJ3M6rqff8993kmAaTgbc9q9HTgPD2jtZukEqgeIGKfUN0"'

Pré-requisitos: ansible e sshpass na máquina do cliente.

    
por 21.11.2018 / 16:30

Tags