【问题标题】:gpg: signing failed: secret key not availablegpg:签名失败:密钥不可用
【发布时间】:2016-06-16 14:11:07
【问题描述】:

我在 Maven 上托管了一个工件。我在本地 Windows 机器上的设置运行良好; maven, gpg keys 命名。到目前为止,我可以做到'mvn clean deploy',并且我的工件得到了非常成功的签名和发布。

与托管在 ubuntu 服务器上的 jenkins 进行持续集成。我通过 putty 在 ubuntu 上成功安装了 gpg。由于我已经使用我的 gpg 密钥签署了 maven 上的工件版本,我应该继续使用它们对吗?

所以,我使用 winscp 将 gnupg 文件夹及其所有内容传输到 ubuntu。确实,当我运行gpg --list-keys 时,我可以看到我的密钥信息(我只配置了一个密钥)。我在想,这表明我在 ubuntu 上的配置是成功的。

根据一个回答 this question 我应该认为 ubuntu 上没有配置密钥。那么为什么gpg --list-keys 会起作用呢?

当 jenkins 尝试部署工件时,“sign”目标失败,maven-gpg-plugin 报告:

gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available

构建失败,我该如何解决这个问题?

【问题讨论】:

  • 构建服务是否在另一个用户下运行?如果是这样,请确保将密钥导入服务用户的 GnuPG 目录(sudo -su username 或类似解决方案)。
  • @JensErat,在阅读了您的评论后,我清除了 Ubuntu 上的 .gnupg 目录,并按照this tutorial 重新开始导入。一切运作良好。但是,我仍然没有看到任何变化
  • @JensErat,我很晚才知道构建服务在不同的用户上运行。我做了sudo -su username,尝试了--list-keys,但出现了写访问错误。因此,我使用 root 帐户授予该用户对 .gnupg 目录的访问权限,导出密钥并将其导入正确用户的帐户。这一切还没有帮助我。
  • 我不知道 Maven 是如何执行签名的,也无法真正帮助您解决这个问题。确保了解 GnuPG 是如何在哪个用户下调用的,确保将密钥导入该用户,并注意 GnuPG 对权限非常挑剔,如果权限授予过于广泛(通常,只有用户本身应该是能读能写,没有别的)。
  • 感谢您提供有用的见解,我完成了涉及user 的所有上述工作。唯一需要的其他步骤是 maven-gpg-plugin 的配置文件以找到默认密钥。

标签: java maven ubuntu jenkins gnupg


【解决方案1】:

我找到了解决方案。我唯一缺少的是我的特定maven 项目的settings.xml 文件。在构建我的项目时,我必须找出 maven 从哪里查找此文件(使用mvn -X)。不知何故 Ubuntu 没有创建它,所以我必须为自己创建一个并放入相关的 gpg 属性。在此之后,一切都变得轻而易举。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2021-12-18
    • 2022-06-14
    • 2010-09-10
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多