如何重置Jenkins的密码?

fed*_*qui 2 security jenkins

我刚刚注意到我无法登录我的 Jenkins。

如何重置密码并再次访问我的帐户?我没有看到任何恢复密码的链接,它们似乎在安装目录中被散列。

fed*_*qui 6

如何重置 Jenkins 的密码中,您有一套技巧可以实现这一点。我的解决方案基于它,但它在某一点上存在分歧。

这是我为解决问题所做的工作:

让我们假设 Jenkins 的目录存储在$JENKINS(在我的机器中,这是/var/lib/jenkins/)并且您的用户名是user.

  • 通过禁用允许注册disableSignup。这意味着编辑$JENKINS/config.xml此选项并将其设置为false

    <disableSignup>false</disableSignup>
    
    Run Code Online (Sandbox Code Playgroud)
  • 重启詹金斯( service jenkins restart)。

  • 输入 Jenkins 并注册一个新用户,例如testuser,密码是您要为用户设置的密码user

  • 提取哈希密码$JENKINS/users/testuser/config.xml。你会看到类似的东西:

    <passwordHash>#jbcrypt:$2a$10$PY7p4dxFiGSgJpxiNVTQDuJKAQ8pr9snDgQXaafogjErvgB0oC3qy</passwordHash>
    
    Run Code Online (Sandbox Code Playgroud)
  • 设置user的密码到这一块<passwordHash>。也就是说,$JENKINS/users/user/config.xml在那里编辑和替换密码以设置上面的密码。

  • 通过启用禁止重新注册disableSignup。也就是说,在$JENKINS/config.xmldisableSignup选项设置回true

    <disableSignup>true</disableSignup>
    
    Run Code Online (Sandbox Code Playgroud)
  • 再次重启詹金斯

请注意,您也可以通过生成 jBCrypt 直接替换密码。例如,在http://www.mindrot.org/projects/jBCrypt/ 中,您可以找到它的一些 Java 代码。