Eu não recomendaria a exibição de ssh-add
ou expect
em uma tarefa do cron, já que é
excessivamente complicado para executá-lo no ambiente limitado que o cron usa
para executar seus trabalhos e prefiro não armazenar senhas no crontab.
Em vez de usar sua chave SSH normal, eu criaria uma nova chave que sempre é para ser usado para executar o comando que você deseja executar pelo cron. Eu configuraria o key sem uma frase-senha e altere sua propriedade / permissões (0600) para que possa ser acessada apenas pelo ID do usuário efetivo que a tarefa do cron executa como, por exemplo, o ID dos usuários cujo crontab está sendo processado.
No seu caso específico, o comando específico é git push
, então a nova chave teria que ser enviada para o seu servidor git. A maioria dos servidores git deve ser capaz de aceitar várias chaves SSH públicas.
Em geral, para processos automatizados, é melhor criar chaves específicas sem
frases secretas. Um conjunto restrito de comandos permitidos é então configurado no
servidor SSH remoto, colocando pares de opções na sua linha no
authorized_keys
file, por exemplo,
command="automated-task.sh",client=my.local.host,no-pty,no-agent-forwarding,no-port-forwarding ssh-rsa AAA…public…part…of…specific…keypair automated_user@server
Disclaimer: Eu tenho mais experiência com o GNU / Linux do que com o OS X, mas com o AFAIK as informações acima devem se aplicar a todos os sistemas * nix.