Altere a senha de um usuário com os comandos usermod e ssh

1

Eu tenho duas máquinas que têm o mesmo conjunto de usuários em cada uma. Eu tenho um script em uma máquina que eu quero alterar a senha em ambas as máquinas.

Então, eu gerei uma senha aleatória, depois a chamo e a transmito para o comando usermod, assim:

usermod -p PASSWORD_HASH USER
ssh REMOTE_USER@REMOTE_HOST sudo usermod -p PASSWORD_HASH USER

O REMOTE_USER tem privilégios para executar o comando usando o sudo sem precisar de senha.

O resultado disso é que a senha foi alterada com sucesso na máquina local, o que posso verificar imediatamente ao tentar:

su USER

Eu também verifiquei o arquivo / etc / shadow, e parece que o hash está realmente armazenado corretamente.

No entanto, se eu pular para a outra máquina e tentar fazer o login como USER, não consigo entrar. Recebo um erro de autenticação. Se eu fizer login na máquina remota com privilégios de superusuário e verificar o arquivo / etc / shadow, o hash da senha ficará totalmente distorcido e não fará sentido.

No entanto, se, enquanto estiver nessa máquina remota, eu executar exatamente o mesmo comando sem passar por ssh, usando

sudo usermod -p PASSWORD_HASH USER

Então tudo funciona bem.

Minha pergunta:

Há algum detalhe aqui que estou perdendo que está fazendo com que o comando usermod NÃO trabalhe sobre o ssh por algum motivo?

    
por Jared Brandt 17.08.2016 / 23:12

1 resposta

0

Veja esta resposta relacionada . Em suma, o SSH passa o que segue como uma string, não como uma lista de argumentos, então coloque-o entre aspas. E você pode querer inserir um && antes do último sudo.

    
por tlhIngan 17.08.2016 / 23:29