如何获取GitHub容器仓库(ghcr.io)API令牌?私有镜像认证失败求助
解决ghcr.io私有镜像令牌请求401问题
问题核心在于认证方式错误:ghcr.io的令牌发放端点不支持Bearer格式的PAT,必须使用Basic认证——将你的GitHub用户名与PAT组合成用户名:PAT的字符串,经Base64编码后放在Authorization: Basic请求头中。
正确的请求方式
方式1:手动生成Basic认证头
先对用户名和PAT进行Base64编码:
echo -n "$USER_NAME:$GITHUB_TOKEN" | base64
再用编码后的字符串发起请求:
curl -v -H "Authorization: Basic 替换为刚才生成的Base64字符串" "https://ghcr.io/token?service=ghcr.io&scope=repository:$USER_NAME/$IMAGE:pull"
方式2:用curl的-u参数自动处理(更简便)
curl的-u参数会自动完成Basic认证的编码流程,无需手动操作:
curl -v -u "$USER_NAME:$GITHUB_TOKEN" "https://ghcr.io/token?service=ghcr.io&scope=repository:$USER_NAME/$IMAGE:pull"
额外检查项
- 确认PAT包含
package:read权限(私有镜像拉取的必要权限),若镜像属于组织,需确保PAT拥有组织级权限或你是该镜像的权限持有者。 - 核对
$USER_NAME和$IMAGE环境变量的准确性,私有镜像路径格式为用户名/镜像名或组织名/镜像名,避免路径错误。
内容的提问来源于stack exchange,提问作者StaticMethod
相关产品推荐
相关产品推荐

