Acabei de atualizar do Snow Leopard para o Lion e meus trabalhos do cron que usam ssh pararam de funcionar. Parece que o ssh-agent não está mais funcionando conforme o esperado.
Aqui está uma versão reduzida do meu script chamado from-cron que funcionou muito bem no Snow Leopard:
#!/bin/bash
whoami # just to verify I'm running as myself, not root
ssh-agent # just to see what it outputs
eval `ssh-agent`
ssh -vvv REMOTESERVER ls
Quando executado no prompt de comando, esse script funciona conforme o esperado.
Quando executado a partir do cron, ele não funciona. A saída do ssh-agent parece normal:
SSH_AUTH_SOCK=/tmp/ssh-QRxPUMRxbu/agent.17147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17148; export SSH_AGENT_PID;
echo Agent pid 17148;
Agent pid 17150
Mas a ssh -vvv
saída mostra que falha exatamente quando a chave privada deve ser lida:
debug1: Server accepts key: pkalg ssh-dss blen 818
debug2: input_userauth_pk_ok: fp ...
debug3: sign_and_send_pubkey: DSA ...
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug2: no passphrase given, try next key
Em outras palavras, ele espera que eu digite a senha para ~/.ssh/id_dsa
, a qual, obviamente, não funciona nos trabalhos do cron.
Tudo isso funcionou no Snow Leopard.
Observe que eu tenho a configuração do Keychain Access para que ssh
, ssh-agent
e ssh-add
possa ler minha frase secreta para o meu .ssh/id_dsa
arquivo - como resultado, eu posso fazer o SSH a partir de um prompt do terminal sem precisar digitar minha senha.
É esse problema que eu preciso executar ssh-add
em algum momento do meu processo de login? Executá-lo a partir de um prompt padrão do bash não ajuda no trabalho do cron (embora, estranhamente, ele me solicite minha frase secreta ... o que eu consideraria desnecessário devido à configuração do Keychain Access).
NOTA 1 - antes de me redirecionar - estou ciente de que existe uma pergunta semelhante aqui (
Mac OS X Lion e sshpass ), mas trata-se especificamente de um programa sshpass
que não uso (embora acredite que essa pergunta também seja respondida por essa) )
NOTA 2 - Percebo que as chaves SSH sem frase secreta resolveriam meu problema; no entanto, prefiro não seguir esse caminho.