使用cron作业推送到GitHub--权限被拒绝(公钥)

使用cron作业推送到GitHub--权限被拒绝(公钥),git,ubuntu,ssh,cron,Git,Ubuntu,Ssh,Cron,我已经创建了一个SSH密钥(如下),将其添加到GitHub,并创建了一个Bash脚本,用于提交单个文件并将其推送到GitHub上的存储库。当我从命令行运行这个脚本时,一切正常,更新被推送。但是,当我使用crontab-e设置作业时,推送会生成以下错误: Permission denied (publickey). fatal: The remote end hung up unexpectedly 我已经编辑了用户的crontab(crontab-e),也就是说,我没有使用sudo cront

我已经创建了一个SSH密钥(如下),将其添加到GitHub,并创建了一个Bash脚本,用于提交单个文件并将其推送到GitHub上的存储库。当我从命令行运行这个脚本时,一切正常,更新被推送。但是,当我使用
crontab-e
设置作业时,推送会生成以下错误:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经编辑了用户的crontab(
crontab-e
),也就是说,我没有使用
sudo crontab-e
。我正在运行Ubuntu12.04。

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

事实证明我错了,ssh密钥受密码保护(keychain加载ssh代理),因此它在脚本中失败,但在bash会话中运行时失败。
添加
~/。我的脚本的keychain/$HOSTNAME sh
解决了问题

密码短语位在“”中有详细说明:

您可以在cron会话中建立ssh连接。您需要的是设置公钥身份验证以实现无密码访问。
要使其正常工作,您需要在每个远程服务器的
sshd\u config
中设置
PubkeyAuthentication yes


检查cron在中执行的环境。通常情况下,像您的配置文件这样的东西没有加载,但是您的bashrc加载了,因此,如果SSH的设置只有一个,那么您可能会遇到问题。此SSH密钥是否需要密码短语?是;但是,我已经使用ssh add(如教程中所述)将其添加到ssh代理中,这确实是一个密码问题。我通过设置一个没有密码短语的公钥身份验证来解决这个问题