O que 'passwd root --stdin' definiu minha senha?

1

eu corri:

sshpass -p 'OldPassword' ssh -o StrictHostKeyChecking=no [email protected] 'echo "Te3EQeF2U!-Em_C3eBU6A&a=u2$e28*c" | passwd root --stdin'

Sem perceber que echo "Te3EQeF2U!-Em_C3eBU6A&a=u2$e28*c" resulta em bash: !-Em_C3eBU6A: event not found devido a caracteres especiais na minha senha.

Com base nisso, alguém pode descobrir a que ela pode ter configurado minha senha?

    
por OhShitPlsHelp1 15.04.2016 / 16:25

2 respostas

3

Você pode tentar Te3EQeF2U!-Em_C3eBU6A&a=u2*c ? Isso funcionou para mim ao replicar em uma VM.

Para referência, foi o que fiz.

Na VM do CentOS:

$ mv /usr/bin/passwd /usr/bin/passwd.orig
$ vim /usr/bin/passwd
<INSERT>
while read line
do
  echo "$line" >> /tmp/passwd
done < /dev/stdin
<SAVE>

Isso substituirá o binário passwd por um que receba a mesma entrada que passwd --stdin e simplesmente o escreva em /tmp/passwd .

Então, quando eu executei sshpass -p '<VM-PASSWORD>' ssh -o StrictHostKeyChecking=no root@<VM-IP> 'echo "Te3EQeF2U!-Em_C3eBU6A&a=u2$e28*c" | passwd root --stdin' , recebi Te3EQeF2U!-Em_C3eBU6A&a=u2*c em /tmp/passwd

Quando terminar, basta mover o binário passwd original de volta.

    
por 15.04.2016 / 16:49
0

Por que não usar apenas echo 'root:password' | chpasswd (ou ... | chpasswd -e se a senha já estiver criptografada)? É para isso que o chpasswd é. Veja man chpasswd para detalhes e outras opções.

Você também precisa citar e / ou a string de senha corretamente. Você certamente não o deseja entre aspas porque contém $e28 (que será expandido para o valor da variável $e28 , que provavelmente está vazio).

Portanto, você precisa escapar do $ as \$ ou precisa citar a cadeia inteira de senhas. Isso é um pouco difícil porque o comando ssh já está entre aspas simples. Felizmente, existe uma maneira padrão e confiável de inserir aspas simples entre aspas simples, use '\'' .

sshpass -p 'OldPassword' ssh -o StrictHostKeyChecking=no \
    [email protected] 'echo '\''root:Te3EQeF2U!-Em_C3eBU6A&a=u2$e28*c'\'' | chpasswd'

melhor ainda, seria muito mais simples usar algo assim:

echo 'root:Te3EQeF2U!-Em_C3eBU6A&a=u2$e28*c' | ssh [email protected] chpasswd
    
por 16.04.2016 / 05:48