Docker Login使用过期GPG密钥报错,如何切换至新GPG密钥?
解决Docker Login使用新GPG密钥的问题
问题根源
Docker的凭证存储工具(如pass)仍绑定着已过期的旧GPG密钥ID,导致登录时尝试用旧密钥加密凭证失败。
解决方案步骤
1. 确认Docker的凭证存储方式
查看~/.docker/config.json文件,找到credsStore或credHelpers字段,确定当前使用的凭证存储工具(常见为pass)。
2. 获取新GPG密钥ID
执行gpg --list-keys,从输出中复制新密钥的ID(通常是公钥行末尾的8位或16位字符)。
3. 更新凭证存储的加密密钥(以pass为例)
- 先备份现有pass存储,防止凭证丢失:
cp -r ~/.password-store ~/.password-store.bak - 用新GPG密钥重新初始化pass:
pass init 你的新GPG密钥ID - 重新执行
docker login,此时Docker会使用新密钥加密并存储凭证。
4. 直接配置Docker使用新GPG密钥(非pass场景)
- 检查是否存在指定旧密钥的环境变量,若有则更新:
export DOCKER_GPG_KEY_ID=你的新GPG密钥ID - 清理旧的Docker凭证配置:编辑
~/.docker/config.json,删除auths字段下的对应仓库配置。 - 确保新GPG密钥设为默认密钥:
gpg --default-key 你的新GPG密钥ID - 重新执行
docker login即可。
5. 确保新密钥已被信任
执行以下命令设置新密钥为最高信任级别:
gpg --edit-key 你的新GPG密钥ID
在交互界面中输入trust,选择5 = I trust ultimately,最后输入save退出。
内容的提问来源于stack exchange,提问作者HeronAlgoSearch
相关产品推荐
相关产品推荐

