You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

手动正常的脚本在Crontab执行时出现Bitbucket公钥权限拒绝错误求助

解决Crontab执行Git推送Bitbucket权限拒绝问题

核心原因

Crontab执行时的环境变量与交互式Shell不一致,导致Git无法正确找到SSH密钥或使用正确的身份验证配置。

具体解决步骤

1. 在脚本中指定SSH密钥路径

直接在git push命令前指定密钥,避免crontab找不到密钥文件:
修改脚本中的git push行:

GIT_SSH_COMMAND="ssh -i /home/abmc/.ssh/id_rsa" git push

或者在脚本开头全局设置:

export GIT_SSH_COMMAND="ssh -i /home/abmc/.ssh/id_rsa"

2. 导入用户环境变量

交互式Shell加载的.bashrc或.profile配置,crontab默认不会加载,在脚本开头添加:

source /home/abmc/.bashrc

或者在crontab条目里直接指定HOME环境:

* * * * * HOME=/home/abmc /home/abmc/cron.sh

3. 确认Crontab归属用户

确保你是用abmc用户创建的crontab,而非root或其他用户:

crontab -u abmc -e

编辑完成后保存,确保任务以abmc身份执行。

4. 排查SSH连接细节

写个测试脚本排查crontab下的SSH问题:

#!/bin/bash
ssh -v git@bitbucket.org > /tmp/ssh_cron_test.log 2>&1

将这个脚本加入crontab执行,然后查看/tmp/ssh_cron_test.log,里面会显示SSH连接时的详细日志,比如是否加载了正确的密钥、是否有权限问题等。

5. 再次确认密钥权限(兜底检查)

虽然你已检查过,但再确保权限符合SSH要求:

chmod 700 /home/abmc/.ssh
chmod 600 /home/abmc/.ssh/id_rsa
chmod 644 /home/abmc/.ssh/id_rsa.pub

内容的提问来源于stack exchange,提问作者abmc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:10:35