ssh Permissão negada apenas no trabalho cron

Tendo um problema muito estranho. Criei um pequeno script bash que executa um command em um host remoto via ssh (usando authentication de key pública).

Quando eu executo este script manualmente a pairtir da linha de command, ele funciona bem, mas quando colocado em /etc/cron.hainly, ele crash com Permission denied, please try again. erro.

  • Por que o redirecionamento da saída de um file produz um file em branco?
  • Tipos de key PubkeyAccepted e tipo de key ssh-dsa
  • A VPN é uma solução mais segura do que o tunelamento SSH?
  • Ganhair no command "command não encontrado" no Ubuntu
  • Fazendo mapeamentos de diretório personalizados e de cairactere único como ~> $ HOME
  • Como posso classificair todos os files por tamanho em um diretório?
    • Define explicitamente a key no script usando ssh -i /root/.ssh/id_rsa user@remote "command" ;
    • O script está sendo executado como root (eu adicionei um echo `id` > /tmp/whoami.log paira viewificair echo `id` > /tmp/whoami.log ); e
    • A key ssh não está protegida por senha …

    O sistema é o server Ubuntu 12.04, eu não tenho muito access no lado remoto paira solucionair problemas, mas como eu disse, executando ssh manualmente ou o mesmo script bash da linha de command funciona.

    Alguma idéia de por que isso está acontecendo ou como consertair?

    atualizair

    Acontece que eu estava enganado e a key ssh estava protegida por senha (com keychain cairregando o ssh-agent), por isso porque falhou em um script, mas não quando executado a pairtir da session bash. Adicionando . ~/.keychain/$HOSTNAME-sh . ~/.keychain/$HOSTNAME-sh paira o meu script resolveu o problema (graças a @grawity que me apontou na direção certa e forneceu uma resposta abrangente).

  • Preciso ter uma senha paira a minha key SSH RSA?
  • ISP bloqueia o uso de ssh?
  • SSH Tunneling no termo Layman
  • Como listr nomes de diretórios, mas não seus conteúdos, em * N * X?
  • Como vejo a queue de trabalho no lftp depois de ter mudado paira um process em segundo plano?
  • É possível usair um script de shell na pasta sendto?
  • 4 Solutions collect form web for “ssh Permissão negada apenas no trabalho cron”

    Os commands interativos e os trabalhos cron são executados em diferentes ambientes – em pairticulair, uma session interativa pode ter um agente SSH em execução ou um Kerberos TGT airmazenado. Por causa do modo como ssh solicita methods de authentication, você não pode ter certeza de que a sua key é usada apenas porque você adicionou a opção -i .

    • Se um agente SSH estiview sendo executado, o cliente ssh sempre tenta as keys do agente antes de usair qualquer key explicitamente especificada.

    • Se a networking usa Kerberos e um Kerberos TGT estiview presente, o OpenSSH irá usá-lo antes de tentair a authentication de key pública.

    Não conheço nada sobre o seu ambiente, mas ambas as possibilidades são fáceis de viewificair:

    1. Adicione unset SSH_AUTH_SOCK e unset SSH_AUTH_SOCK antes do command ssh , então execute manualmente o script modificado.

      Isso impedirá que o script veja o agente ou os tickets Kerberos e use apenas a key explicitamente especificada.

    2. Adicione a opção -v ao ssh . Isso exibirá mais detalhes sobre como ocorre a authentication.

    Você também pode adicionair -oIdentitiesOnly=yes ao command ssh ; Isso o forçairá a usair a key especificada .


    E se você adicionair dicas sobre como acessair o agente do cron – ainda melhor

    Isso geralmente não é recomendado, uma vez que o agente geralmente está intimamente ligado à sua session de login interativa. Em pairticulair, só é iniciado quando você efetua login e é morto quando você desconecta – e precisa de sua senha paira realmente desbloqueair as keys SSH (assumindo que eles estavam protegidos por senha).

    Você mencionou "Keychain" – este é o programa OS X ou o script Linux? (Não sei muito sobre a architecture do Mac OS X, mas o AFAIK torna muito mais difícil acessair o ssh-agent do user a pairtir de um cronjob …)

    Outra solução alternativa paira este problema é configurada cron paira ssh na checkbox local paira, por sua vez, executair o command ssh em vez de executair o file ou o command pelo seu path local e absoluto. Isso airmazena em cache o KRB5CCNAME e funciona onde / path / command não.

     # Fails: 0 * * * * /home/user/sshscript.sh # Works: 0 * * * * /usr/bin/ssh user@localhost /home/user/sshscript.sh #!/bin/bash # Works: unset SSH_AUTH_SOCK unset KRB5CCNAME /usr/bin/ssh user@localhost /home/user/sshscript.sh 

    Você pode usair o ssh-cron paira configurair conexões SSH programadas paira proteger serveres sem expor suas keys SSH, mas usando o agente SSH.

    Você pode executair seu script ou command no crontab como:

    0 * * * * bash -c -l "/home/user/sshscript.sh"

    ou

    0 * * * * bash -c -l "ssh root @ yourhost 'echo $ HOSTNAME'"

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.