我有一个非常简单的shell脚本的cron作业,从另一个服务器scp文件到本地。 例如,
#!/bin/bash scp $REMOTE:/$FILE ./
当然,服务器需要一个私钥来login,我有configuration文件保存HostName,身份文件(〜/ .ssh / id_rsa,一个国防部600)。
但是,当cron正在运行时,它有“权限被拒绝”的问题。
X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/xxx> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=xxxx> Message-Id: <20120118235702.33A7B16C03B5@xxx-xxxx-deskbox> Date: Wed, 18 Jan 2012 18:57:02 -0500 (EST) Permission denied (publickey).
我到处检查,它说crontab将作为所有者/用户的环境运行。
任何人都有这个解决scheme? 谢谢!
问题解决了。 我的id_rsa键上有一个密码。 因此,手动运行不需要它作为短语在会话中; 而crontab需要密码。 删除密码
ssh-keygen -p [-P old_passphrase]
并为新的密码input空白; 或者检查这个页面
希望我的回答可以帮助一些程序员几个小时的debugging。