2014-06-30 6 views
0

J'utilise un script cron qui rsyncote avec un serveur via ssh.Utilisation de cron avec les clés ssh

Les commandes fonctionnent très bien lorsque je les exécute directement sous la forme d'un script bash, mais lorsque je les exécute en tant que cron, cron déconnecte les mauvaises permissions. Je pense que c'est parce que l'utilisateur cron n'a pas accès à la clé ssh.

Voici le code que je dois courir Cron:

rsync --progress -rvze ssh [email protected]/root_folder folder/ 

Puis-je passer la clé ssh dans le cronfile, ou dans le script lui-même? Si oui, pourriez-vous donner un exemple comme celui ci-dessus?

+0

Avez-vous spécifié pour exécuter le script en tant que root 'crontab'? – hek2mgl

+0

Pour quel utilisateur cela fonctionne-t-il et quel utilisateur avez-vous créé? Est-ce que la clé a une phrase secrète? –

+0

La clé DOES a une phrase secrète. Le script ne s'exécute pas en tant que root dans crontab. J'ai fait le crontab en tant qu'utilisateur habituel, et la clé ssh est pour le même utilisateur. Je ne dois pas courir en tant que root parce que je ne veux pas attendre de mots de passe, je veux juste qu'il fonctionne correctement en arrière-plan. – johncorser

Répondre

2

add -i passer à votre commande ssh dans votre ligne de commande:

rsync --progress -rvze "ssh -i/path/to/ssh_private_key" [email protected]:/root_folder folder/ 
+0

Ne serait-il pas préférable d'exécuter le script en tant que 'my_user'? (Du point de vue de la sécurité?) – hek2mgl

+0

@ hek2mgl Cela répond à la question de savoir comment transmettre le fichier de clé ssh. Il ne fait pas exécuter la commande en tant qu'utilisateur différent. –

+0

@thatotherguy Oui, je sais, c'est pourquoi je demande. Si vous spécifiez que le script doit s'exécuter sous la forme 'my_user', le commutateur' -i' ne sera plus requis. Et ce serait sécurisé. L'exécution de la commande en tant que root n'est pas sécurisée. – hek2mgl

Questions connexes