手动正常的脚本在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
相关产品推荐
相关产品推荐

