Jenkins中的加密密钥存储在哪里?

18

我正尝试将一个Jenkins的凭证迁移到另一个Jenkins,但是用户名/密码在${JENKINS_HOME}/credentials.xml中是加密的。

我发现了这个答案,但问题是它没有解释在哪里找到加密密钥以成功迁移凭证。

非常感谢任何帮助!

编辑:更多信息...我的${JENKINS_HOME}在单独的卷上,我将其分离并重新附加到新的VM上,但仍然不能与我一起使用。

2个回答

34

我发现这篇分析文章(链接已于2020年6月失效,在此存档)非常有帮助。简而言之:

Jenkins使用master.key加密hudson.util.Secret密钥。 然后,该密钥用于加密credentials.xml中的密码。

当我需要使用一些默认密码引导新Jenkins实例时,我使用一个包含以下文件的模板目录树:

  • secrets/hudson.util.Secret
  • secrets/master.key

这样可以正常工作。


我还必须对com.cloudbees.plugins.credentials.SecretBytes.KEY进行模板化,以使事情正常工作。 - Misko
秘钥(secret.key)和非那么秘密的秘钥(secret.not-so-secret key)的重要性是什么?@Alex O - Kishor Unnikrishnan
1
@Kishor U,就我所见,secret.key.not-so-secret并不包含密钥——它是一个布尔指示文件,用于修复安全问题 - Alex O
是的,没错。但即使我没有复制我的 secret.key,我仍然能够将我的凭据从一台机器复制到另一台机器。 - Kishor Unnikrishnan
1
@Kishor U,secret.key中的密钥已弃用自2013年以来,因此它的内容可能在今天已经不再重要。 - Alex O

9
关于JENKINS迁移,我最近遇到了这种情况,在经过几次测试后,我的解决方法对我有效。
以下是我所做的事情:
1. 将以下文件和文件夹从源Jenkins移动到目标位置:
- $JENKINS_HOME/secret.key - $JENKINS_HOME/secrets - $JENKINS-HOME/users - $JENKINS_HOME/credentials.xml
2. 请注意:不需要移动这些文件:
- $JENKINS_HOME/identity.key.enc - $JENKINS_HOME/secrets/org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
否则,在启动Jenkins后,您将会看到以下错误:
java.lang.AssertionError: InstanceIdentity is missing its singleton

3. Jenkins会自动生成这两个文件。一旦启动,你就可以正常使用了。

secrets/master.key 文件是什么? - BMW
不需要使用 master.key 进行迁移。它将在较新的实例中使用。 - Ashish K Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接