【问题标题】:Pushing to GitHub using a cron job -- Permission denied (publickey)使用 cron 作业推送到 GitHub——权限被拒绝(公钥)
【发布时间】:2014-12-03 11:32:41
【问题描述】:

我创建了一个 SSH 密钥(在 the official tutorial 之后),将其添加到 GitHub 并创建了一个 Bash 脚本,该脚本将单个文件提交并推送到我在 Github 上的存储库。当我从命令行运行此脚本时,一切正常并推送更新。但是,当我使用crontab -e 设置作业时,推送会产生以下错误:

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

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

【问题讨论】:

  • 检查 cron 执行的环境。通常情况下,您的配置文件未加载,但您的 bashrc 已加载,因此如果您的 SSH 设置只有一个,您可能会遇到问题。
  • 此 SSH 密钥是否需要密码?
  • 是的;但是,我已使用 ssh-add 将其添加到 ssh-agent(如教程中所述)。

标签: git ubuntu ssh cron


【解决方案1】:

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

原来我弄错了,ssh 密钥受密码保护(使用钥匙串加载 ssh 代理),因此它从脚本失败但从 bash 会话运行时失败。
在我的脚本中添加. ~/.keychain/$HOSTNAME-sh 解决了这个问题。

密码短语位在“Not able to ssh in to remote machine using shell script in Crontab”中有详细说明:

您可以在 cron 会话中建立 ssh 连接。您需要设置公钥身份验证以进行无密码访问。
为此,您需要在每个远程服务器的sshd_config 中添加PubkeyAuthentication yes

【讨论】:

  • 确实是密码问题。我通过设置没有密码的公钥身份验证解决了这个问题
猜你喜欢
  • 2014-02-01
  • 2012-01-18
  • 2012-04-25
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多