通过 cron 推送
Posted
技术标签:
【中文标题】通过 cron 推送【英文标题】:git push via cron 【发布时间】:2021-12-27 01:29:29 【问题描述】:我正在尝试从 cron 运行 git push
。当我在 shell 上以交互方式执行命令时,它运行良好。从我的用户的 crontab 运行命令时,cron 会传递错误消息
Permission denied (publickey).
我认为这与查找或读取我的 ~/.ssh/id_rsa 无关,因为我可以从 cron 中捕获文件。 UID 和 EUID 在 cron 作业中设置得很好。 - 有什么想法吗?
更新
我在为我的 cron 作业提供环境密钥 SSH_AUTH_SOCK 时让它工作了,但我担心这只有在我登录时才有效。我正在寻找一种独立于交互式登录的解决方案.
【问题讨论】:
你最终做了什么来解决这个问题?对我来说这不是 SSH_AUTH_SOCK 变量(尝试在 crontab 行中传递它)。我收到 git credential-osxkeychain 不是有效的 git 命令的错误。 @StephenTurner 我在没有代理转发的情况下登录机器。我启动 ssh 代理,将其输出捕获到文件中。我(shell)在 shell 上“获取”这个文件并调用 ssh-add(所有这些都在 shell 脚本中)。最后一个命令需要输入密码。只要 ssh-agent 继续运行,cron 作业只需获取上述文件,然后 git push 命令就可以正常运行。 - 不过,我无法评论“git credential-osxkeychain”(我的在 linux 上运行)。 【参考方案1】:作为explained here,这可能是由于ssh代理的cron会话shell缺乏知识。 如果是这种情况(即,如果您使用带有密码的 ssh 私钥),keychain 是通常的解决方案(如mentioned here)。 此示例中的更多详细信息:“Passwordless connections via OpenSSH using public key authentication, keychain and AgentForward”。
【讨论】:
优秀的答案。这为我的修修补补提供了必要的背景。 这似乎对我不起作用。我收到一个错误,指出 git credential-osxkeychain 不是有效的 git 命令。谢谢。 @StephenTurner ***.com/questions/11745504/… 会有帮助吗?以上是关于通过 cron 推送的主要内容,如果未能解决你的问题,请参考以下文章