joh*_*ser 4 ssh bash cron rsync
我正在使用一个 cron 脚本,通过 ssh 与服务器同步。
当我直接将它们作为 bash 脚本运行时,这些命令效果很好,但是当我将它们作为 cron 运行时,cron 会注销错误的权限。我认为这是因为 cron 用户无权访问 ssh 密钥。
这是我需要 cron 运行的代码:
rsync --progress -rvze ssh my_user@myserver/root_folder folder/
Run Code Online (Sandbox Code Playgroud)
我可以将 ssh 密钥传递到 cronfile 或脚本本身吗?如果是这样,您能提供一个像上面那样的例子吗?
jyt*_*tou 18
我知道这个线程很旧,但是为了像我一样偶然发现这个问题的其他人,这里有两个选择:
对于第二个选项,假设您的 cron 作业以正确的用户运行(否则您的环境中需要正确设置更多内容),只需运行:
env|grep -i ssh
Run Code Online (Sandbox Code Playgroud)
会有这样一行:
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
Run Code Online (Sandbox Code Playgroud)
您的用户 ID 可能不同。从那里,您只需将以下行添加到脚本中:
if [ -z "$SSH_AUTH_SOCK" ]
then
export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
fi
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!