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

GitHub Actions推送镜像至GHCR遇403 Forbidden错误求助

解决GHCR推送403 Forbidden错误

针对你遇到的GitHub Actions推送Docker镜像到GHCR时出现的403错误,以下是几个排查和解决方向:

1. 验证自定义密钥的权限

你使用的GCR_TOKEN需要具备以下权限:

  • write:packages:允许推送镜像到GHCR
  • repo:如果镜像关联私有仓库,需要该权限访问代码
    确保创建组织级密钥时这些权限已勾选,且密钥作用范围覆盖当前仓库。

2. 修正仓库所有者变量

登录步骤中的username使用${{ secrets.REPO_OWNER }}存在手动配置错误风险,建议直接用GitHub内置变量${{ github.repository_owner }}替代,它会自动获取组织/个人账号名,避免拼写错误:

- name: Login to GHCR
  uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
  with:
    registry: ghcr.io
    username: ${{ github.repository_owner }}
    password: ${{ secrets.GCR_TOKEN }}

3. 完善作业权限配置

当前作业仅配置了packages:write,补充contents:read权限(用于代码拉取),确保权限覆盖完整:

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write
    # 后续步骤不变

4. 尝试使用默认GITHUB_TOKEN

如果组织允许,可直接使用GitHub Actions提供的默认GITHUB_TOKEN替代自定义密钥,它已自动具备对应仓库的权限,无需额外配置:

- name: Login to GHCR
  uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c
  with:
    registry: ghcr.io
    username: ${{ github.actor }}
    password: ${{ secrets.GITHUB_TOKEN }}

5. 确认镜像标签格式

检查tags字段是否正确,${{ github.repository }}会自动生成组织名/仓库名格式,最终标签应为ghcr.io/组织名/仓库名:提交SHA,确保没有多余或缺失的字符。

内容的提问来源于stack exchange,提问作者Muhammad Areeb Siddiqui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:52:45