Como executar o sudo com o ssh paralelo

0

Linux: ubuntu 14.04.3 LTS

cat /tmp/passfile
ABCxyz123

sshpass -f /tmp/passfile parallel-ssh -I -A -h hostlist.txt "sudo -S ls -l /root" < /tmp/passfile

e o método descrito aqui no google discussion groups.google gera o erro como:

[1] 01:07:25 [FAILURE] 10.0.4.194 Exited with error code 255
[2] 01:07:25 [FAILURE] 10.0.4.205 Exited with error code 255

no servidor remoto estou tentando conectar seu /var/log/auth.log abaixo da mensagem

Sep 24 19:20:52 ubu1401 sshd[5765]: Accepted password for ubuntu from 10.0.4.1 port 55019 ssh2
Sep 24 19:20:52 ubu1401 sshd[5765]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)
Sep 24 19:21:26 ubu1401 sshd[5765]: pam_unix(sshd:session): session closed for user ubuntu
Sep 24 19:21:26 ubu1401 sudo: pam_unix(sudo:auth): conversation failed
Sep 24 19:21:26 ubu1401 sudo: pam_unix(sudo:auth): auth could not identify password for [ubuntu]
Sep 24 19:22:25 ubu1401 sshd[5791]: Connection closed by 10.0.4.1 [preauth]
    
por satch_boogie 24.09.2016 / 21:26

2 respostas

0

você tentou rodar isso via echo da senha no shell?

echo "echo 'yourpassword'; sudo -S -c 'ls -l /root'"|pssh -I -H hostlist.txt

    
por 21.10.2016 / 16:09
0

Para fornecer a senha o mais segura possível, tente esta versão ( pssh no CentOS, Fedora e parallel-ssh no Ubuntu, Debian):

stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \ ssh <USER>@localhost "sudo -S dmesg"

e depois adaptá-lo para pssh assim:

stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \ pssh -H <USER>@localhost -o /tmp/output -I "sudo -S dmesg"

Eu uso o mesmo para uma coleção ad-hoc de despejos de vários servidores. Pare-o usando Ctrl + C como de costume. Ele mostrará [FAILURE] <HOST> Interrupted , mas isso é apenas porque o tcpdump seria executado infinitamente - a saída ainda está no local usual. A opção -t 0 é para que a conexão não expire. Eu também poderia usar o tmux ou screen e coletar os dumps depois.

stty -echo; printf "Password: "; read PWD; stty echo; echo "${PWD}" | \ pssh -h <HOSTFILE> -o /tmp/output -t 0 -I "sudo -S tcpdump -l -nn -vv -i any not port 22"

Certifique-se de incluir o usuário ssh correto e de que você se conectou a esses servidores antes. Testar as coisas localmente geralmente evita derrubar toda a frota de servidores. Você pode usar os endereços 127.0.0.X em vez de localhost para aproximar vários hosts.

    
por 12.12.2018 / 12:49