使用公用/私人密钥不工作,通过SSH使用rsync

我有一个在backup.sh文件(chmod 775)中的脚本:

rsync -e 'ssh -p 31234' -avlz --delete --stats --progress --copy-links [email protected]:/home/admin/rsync /home/myname/rsync/foo/ 

当我手动调用它时,一切正常(我不必input密码)。 但是当我从cron调用它时,它不起作用

我在同事的计算机上使用了相同的设置(与我有同样的访问权限),它运行良好。

怎么了?

我有我的passpharseless SSHlogin设置。 我使用如下命令: rsync --delete -auve 'ssh -i /home/red/.ssh/cron_jobs_key' red@othermachine:/source/dir1 /dest/dir2

这里的关键是“ -i /home/red/.ssh/cron_jobs_key ”,我已经设置了一个没有密码的sshlogin。 否则,我将不得不input我的SSH密钥,当我login到我的本地机器。 我为cron作业生成了这个ssh密钥。

一些提示:

  • 检查你本地的电子邮件(如果你configuration它)。 Cron会通过电子邮件发送预定命令的输出。
  • 确保rsync在你的PATH中。 您可以通过在cron作业中运行“env”命令来检查这一点,或者在您的现有脚本中包含env命令。 即,添加一行:“env> /tmp/env_output.txt”,然后检查该文件。
  • 你可以在你的crontab的顶部定义一个PATHvariables:

PATH = / sbin目录:/ bin中:/ usr / sbin目录:在/ usr / bin中

通过提到你不必进入通行证,我会假设你使用ssh-agent每个会话进入一次。

这不会从cron工作,因为cron无法访问您的SSH_AUTH_SOCKvariables,因为它已经在机器启动时启动,而不是在您当前的会话中。

如果你想这个工作,你将不得不使用密码短语,这可能是你的同事正在使用。