Jenkins使用什么密码加密?
我正在修改Jenkins作业的xml。 有一个字段是密码。 当我得到xml时,它是原始密码,现在有一个哈希。
我需要知道如何从原始密码值创建此哈希。
user zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=
我一直在阅读Jenkins 源代码 ,我认为HudsonPrivateSecurityRealm.java类涉及但我不确定salt参数。
PS:这不适用于Jenkins密码是针对一个插件,在作业配置中它有一个密码字段。
实际上,它不是哈希,而是加密密码。 我想加密密钥存储在主节点中。 实际上,您可以通过在master的脚本控制台上执行以下groovy脚本来解密密码
import hudson.util.Secret def secret = Secret.fromString("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk=") println(secret.getPlainText())
如果你想加密密码,那么
import hudson.util.Secret def secret = Secret.fromString("your password") println(secret.getEncryptedValue())
在计算机上加密的密码只能在该特定计算机上解密,因为密钥是随机生成的,显然在不同的机器上密钥是不同的。
查看core / src / main / java / hudson / util / Secret.java以获取更多详细信息
另一种可能性是通过Jenkins Groovy控制台执行Groovy脚本(您可以通过JENKINS_URL /脚本访问它):
println(hudson.util.Secret.decrypt("zlvnUMF1/hXwe3PLoitMpQ6BuQHBJ1FnpH7vmMmQ2qk="))
使用python可以实现其他一些方法:
https://github.com/tweksteen/jenkins-decrypt
https://gist.github.com/menski/8f9980999ed43246b9b2
Jenkins使用AES-128-ECB进行所有加密。 它基本上使用master.key
文件来加密存储在hudson.util.Secret
文件中的密钥。 然后,此密钥用于加密credentials.xml
的密码。
因此,要解密Jenkins密码,您基本上需要访问hudson.util.Secret
和master.key
文件。 您可以通过查看hudson.utils.Secret
类及其fromString
方法来确切了解Jenkins如何加密密码。 基本上,密码在使用KEY加密之前与魔术连接。
有关更多详细信息,请查看: Jenkins中的凭据存储 。
要解密密码,请按照下列步骤操作:
- 在Jenkins中以管理员身份登录时,请转到:
/script
page。 -
运行以下命令:
println(hudson.util.Secret.decrypt("{XXX=}"))
要么:
println(hudson.util.Secret.fromString("{XXX=}").getPlainText())
其中
{XXX=}
是您的加密密码。 这将打印普通密码。要做相反的事情,请运行:
println(hudson.util.Secret.fromString("some_text").getEncryptedValue())
资料来源: tuxfight3r/jenkins-decrypt.groovy
。
或者检查以下脚本: tweksteen/jenkins-decrypt
, menski/jenkins-decrypt.py
。