Tendo um problema muito estranho. Eu criei um pequeno script bash que executa um comando em um host remoto via ssh (usando autenticação de chave pública).
Quando executo esse script manualmente a partir da linha de comando, ele funciona bem, mas quando colocado em /etc/cron.hourly, falha com Permission denied, please try again.
erro.
- Eu defini explicitamente a chave no script usando
ssh -i /root/.ssh/id_rsa user@remote "command"
; - o script está sendo executado como root (adicionei um
echo `id` > /tmp/whoami.log
para verificar novamente); e - a chave ssh não é protegida por senha ...
O sistema é o servidor Ubuntu 12.04, não tenho muito acesso no lado remoto para solucionar problemas, mas como eu disse, executar o ssh manualmente ou o mesmo script bash na linha de comando funciona.
Alguma idéia de por que isso está acontecendo ou como corrigi-lo?
atualizar
Acontece que eu estava enganado, e a chave ssh estava protegida por senha (com as chaves carregando o ssh-agent), por isso, falhou em um script, mas não ao executar a partir da sessão do bash. A adição . ~/.keychain/$HOSTNAME-sh
ao meu script resolveu o problema (graças a @grawity, que me indicou a direção certa e forneceu uma resposta abrangente).
SSH_AUTH_SOCK
está relacionado (embora tenha prazer em tentar qualquer coisa). Estou acessando o arquivo de chave diretamente e o arquivo de chave não está protegido por senha. Quanto a KRB5CCNAME
uma pesquisa rápida mostrou que isso tem algo a ver com o Kerberos. Mais uma vez - não vê a ligação a este problema, mas talvez eu estou faltando alguma coisa aqui ...
-v
opção para que ssh
o comando ...
ssh -i
comando nos dois casos ... Vou tentar desmarcar essas variáveis no script e ver. Boa sugestão para adicionar -v
- eu vou adicioná-lo também.
SSH_AUTH_SOCK
eKRB5CCNAME
variáveis de ambiente.