2014-06-30 177 views
0

我正在使用通过ssh与服务器rsyncs的cron脚本。使用cron与ssh密钥

的命令工作的伟大,当我直接运行它们作为一个bash脚本,但是当我运行它们为cron的,的cron注销坏权限。我认为这是因为cron用户无权访问ssh密钥。

这是我需要cron来运行代码:

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

我可以通过SSH密钥进入cronfile,或者到脚本本身?如果是这样,你会提供一个像上面那样的例子吗?

+0

你有没有指定要运行脚本根'crontab'? – hek2mgl

+0

哪个用户可以工作,哪个用户让cron运行它?密钥是否有密码? –

+0

关键是有一个密码。脚本不能以crontab中的root身份运行。我使用crontab作为我的平常用户,并且ssh密钥是针对同一个用户的。我不会以root身份运行,因为我不希望它期望任何密码,我只是希望它能够正确地在后台运行。 – johncorser

回答

2

附加“-I”在命令行中切换到您的ssh命令:

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

以'my_user'运行脚本不是更好吗? (从安全的角度?) – hek2mgl

+0

@ hek2mgl这回答了如何传递ssh密钥文件的问题。它不会使命令以不同的用户身份运行。 –

+0

@thatotherguy是的,我知道,这就是为什么我问。如果您要指定脚本应该以'my_user'运行,那么'-i'开关将不再需要。这将是安全的。以root身份运行该命令是不安全的。 – hek2mgl