使用cron作业推送到GitHub – 权限被拒绝(publickey)

我创build了一个SSH密钥( 在官方教程之后 ),将它添加到GitHub中,并创build了一个Bash脚本,它提交并将一个文件推送到Github上的存储库。 当我从命令行运行这个脚本时,一切正常,推送更新。 但是,当我使用crontab -e设置作业时,推送会生成以下错误:

 Permission denied (publickey). fatal: The remote end hung up unexpectedly 

我编辑了用户的crontab( crontab -e ),即我不使用sudo crontab -e 。 我正在运行Ubuntu 12.04。

如果它不是一个用户问题(以root身份运行作业,缺少正确的$ HOME / .ssh文件夹),则可能是密码问题 :

事实证明我错了,并且ssh密钥被密码保护(使用钥匙串加载ssh-agent),因此为什么它从脚本失败,而不是从bash会话运行。
添加. ~/.keychain/$HOSTNAME-sh . ~/.keychain/$HOSTNAME-sh到我的脚本解决了这个问题。

密码位在“ 无法使用Crontab中的shell脚本ssh进入远程机器 ”中详细说明:

你可以在cron会话中建立ssh连接。 你需要的是设置一个公钥认证,以便无密码的访问。
为此,您需要在每个远程服务器的sshd_config都有PubkeyAuthentication yes