Você pode criar chaves sem senhas, quando ele pede apenas pressione enter e você receberá uma chave sem senha definida. Use essa chave apenas para conexões internas confiáveis.
Em seguida, usar esta chave com o cron deve funcionar.
Eu tenho uma configuração de rsync funcional entre o Mac OS X Server e o Linux Centos quando executado manualmente em um terminal.
Eu entro no comando rsync, ele pede a senha, eu entro e saio, corre e completa.
Agora eu sei que isso está funcionando. Eu planejei automatizar completamente via cron.
Primeiro, eu crio uma chave SSH autorizada executando este comando no servidor Mac:
ssh-keygen -t dsa -b 1024 -f /Users/admin/Documents/Backup/rsync-key
Inserindo a senha e confirmando. Eu então copio o arquivo rsync-key.pub para o servidor linux e coloco na pasta .ssh do usuário rsync e renomeio para authorized_keys:
/home/philosophy/.ssh/authorized_keys
Eu então me certifico que o arquivo authorized_keys é chmod 600 na pasta chmod 700.
Eu configurei um script de shell para o cron executar:
#!/bin/bash
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LPATH="/Volumes/G Technology G Speed eS/Backup"
$RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH
Em seguida, forneça as permissões de execução do arquivo shell e adicione o seguinte ao crontab usando crontab -e:
29 12 * * * /Users/admin/Documents/Backup/backup.sh
Eu verifico o meu arquivo de registro crontab depois que o comando acima deve ser executado e recebo isso no log e nada mais:
Feb 21 12:29:00 fileserver /usr/sbin/cron[80598]: (admin) CMD (/Users/admin/Documents/Backup/backup.sh)
Então eu suponho que tudo foi executado como deveria. Mas quando eu verifico o servidor remoto, nenhum arquivo foi copiado.
Se eu executar o arquivo backup.sh em um terminal como normal, ele ainda solicitará uma senha, mas desta vez será através do sistema de cadeia do Mac Key, em vez de digitar na janela do console. Com o Mac Key Chain eu posso configurá-lo para salvar a senha para que ele não peça novamente, mas tenho certeza que quando executado com o cron esta senha não é atendida.
Isto é onde eu estou supondo onde rsync no cron está falhando porque precisa de uma senha para se conectar, mas eu pensei que a idéia de fazer as chaves SSH era impedir o uso de uma senha. Eu perdi um passo ou fiz algo errado aqui?
Obrigado
Scott