Jenkins使用什么密码加密?

Fra*_*n b 25 java hudson jenkins

我正在修改Jenkins作业的xml.有一个字段是密码.当我得到xml时,它是原始密码,现在有一个哈希.

我需要知道如何从原始密码值创建此哈希.

  <scm class="com.deluan.jenkins.plugins.rtc.JazzSCM">
    <username>user</username>
    <password>zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=</password>
  </scm>
Run Code Online (Sandbox Code Playgroud)

我一直在阅读Jenkins 源代码,我认为HudsonPrivateSecurityRealm.java类涉及但我不确定salt参数.

PS:这不适用于Jenkins密码是针对一个插件,在作业配置中它有一个密码字段.

tar*_*nov 38

实际上,它不是哈希,而是加密密码.我想加密密钥存储在主节点中.实际上,您可以通过在master的脚本控制台上执行以下groovy脚本来解密密码

import hudson.util.Secret

def secret = Secret.fromString("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=")
println(secret.getPlainText())
Run Code Online (Sandbox Code Playgroud)

如果你想加密密码,那么

import hudson.util.Secret

def secret = Secret.fromString("your password")
println(secret.getEncryptedValue())
Run Code Online (Sandbox Code Playgroud)

在计算机上加密的密码只能在该特定计算机上解密,因为密钥是随机生成的,显然在不同的机器上密钥是不同的.

查看core/src/main/java/hudson/util/Secret.java以获取更多详细信息

  • 知道如何在 Python 中做到这一点吗?或者更好的是,从命令行? (3认同)

CSc*_*ulz 18

另一种可能性是通过Jenkins Groovy控制台执行Groovy脚本(您可以通过JENKINS_URL /脚本访问它):

println(hudson.util.Secret.decrypt("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=")) 
Run Code Online (Sandbox Code Playgroud)

使用python可以实现其他一些方法:

https://github.com/tweksteen/jenkins-decrypt
https://gist.github.com/menski/8f9980999ed43246b9b2


ken*_*orb 10

Jenkins使用AES-128-ECB进行所有加密。它基本上使用master.key文件来加密存储在hudson.util.Secret文件中的密钥。然后,使用此密钥对中的密码进行加密credentials.xml

因此,要解密Jenkins密码,基本上需要访问hudson.util.Secretmaster.key文件。您可以通过查看hudson.utils.Secret类及其fromString方法来确切地检查Jenkins如何加密密码。基本上,在使用KEY加密密码之前,将密码与魔术连接起来。

有关更多详细信息,请检查:Jenkins中的凭证存储


要解密密码,请按照下列步骤操作:

  1. 在Jenkins中以管理员身份登录后,请转到:/script页面。
  2. 运行以下命令:

    println(hudson.util.Secret.decrypt("{XXX=}"))
    
    Run Code Online (Sandbox Code Playgroud)

    要么:

    println(hudson.util.Secret.fromString("{XXX=}").getPlainText())
    
    Run Code Online (Sandbox Code Playgroud)

    {XXX=}您的加密密码在哪里。这将打印普通密码。

    相反,运行:

    println(hudson.util.Secret.fromString("some_text").getEncryptedValue())
    
    Run Code Online (Sandbox Code Playgroud)

资料来源:要点tuxfight3r/jenkins-decrypt.groovy


或者,检查以下脚本:tweksteen/jenkins-decryptmenski/jenkins-decrypt.py