SSH pergunta a senha quando invocá-la no script

0

Eu tenho um mestre e quatro computadores escravos. Eu gerava rsa chave pública / privada no PC mestre. Então eu copiei publickey ( id_rsa.pub ) para máquinas escravas como authorized_keys .

Ele não pergunta a senha quando invoco o SSH assim no terminal do PC mestre:

ssh –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no hduser@slave1 

Eu escrevi este script para fazer o login automático de máquinas escravas sem pedir senha.

SERVER_LIST='cat /home/hduser/slaves' # slave1, slave2 ...

for host in $SERVER_LIST; do
host=hduser@$host 
ssh –t –o UserKnownHostsFile=/dev/null –o StrictHostKeyChecking=no $host; 
done

O SSH está pedindo senhas de escravos quando eu uso este script. Estou recebendo esta mensagem quando usar o SSH com a opção -vv :

debug1: ssh_ecdsa_verify: signature correct
debug2: kex_derive_keys
debug2: set_newkeys: mode 1
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug2: set_newkeys: mode 0
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /root/.ssh/id_rsa ((nil))
debug2: key: /root/.ssh/id_dsa ((nil))
debug2: key: /root/.ssh/id_ecdsa ((nil))
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug2: we did not send a packet, disable method
debug1: Next authentication method: password
hduser@slave1's password:

Alterei as permissões no PC mestre e no PC escravo.

sudo chmod 755 /home/hduser    
sudo chmod 700 -R ~/.ssh
sudo chown hduser ~/.ssh

Ele não pergunta a senha quando eu invoco o SSH no terminal, mas ele ainda pergunta a senha quando invocá-lo no script. o que estou perdendo? Como posso consertar isso?

    
por Eyüp Alemdar 21.03.2014 / 18:42

1 resposta

0

Os logs do SSH mostram que a sessão de login está procurando em /root/.ssh/ para as credenciais, o que implica que seu script está sendo executado como root.

Copie seus arquivos id_ * para /root/.ssh, gere as credenciais apropriadas como raiz ou execute o script como o usuário no qual as credenciais foram salvas.

    
por 21.03.2014 / 19:16