我正在使用一个通过ssh与服务器rsyncs的cron脚本。
当我直接将它们作为bash脚本运行时,命令工作得很好,但当我将它们作为cron运行时,cron会记录错误的权限。我认为这是因为cron用户无权访问ssh密钥。
这是我需要cron运行的代码:
rsync --progress -rvze ssh my_user@myserver/root_folder folder/
我可以将ssh密钥传递给cronfile,还是传递给脚本本身?如果是这样,你会提供一个像上面那样的例子吗?
答案 0 :(得分:2)
在命令行中添加'-i'开关到ssh命令:
rsync --progress -rvze "ssh -i/path/to/ssh_private_key" my_user@myserver:/root_folder folder/
答案 1 :(得分:2)
我知道这个线程很旧,但是为了像我这样迷失于此问题的其他人,这是您的两个选择:
对于第二个选项,并假设您的cron作业使用正确的用户运行(否则,您的环境中还有许多要正确设置的内容),只需运行:
env|grep -i ssh
会有一行像这样:
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
您的用户ID可能有所不同。从那里,您可以将以下行添加到脚本中:
if [ -z "$SSH_AUTH_SOCK" ]
then
export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
fi
希望这会有所帮助!