Jenkins:如何从shell脚本获取加密的凭据密码?

时间:2017-03-13 15:17:23

标签: bash encryption jenkins

当密码被加密并存储到credentials.xml时,我使用的是secrets / master.key。但是恢复相同的credentials.xml和master.key集合并不适用于新的jenkins设置。我甚至试图恢复secret.key但这也没有用。

我还注意到,对于相同的字符串,credentials.xml中的ecrypted字符串也不相同。 我正在尝试自动化jenkins设置。有没有办法可以获得jenkins从bash生成的加密密码?

2 个答案:

答案 0 :(得分:1)

Jenkins及其插件通常使用Secret类加密字符串,(AFAICT)将密钥存储在${JENKINS_HOME}/secrets/hudson.util.Secret下。

我不知道任何简单的独立解决方案,但您可以使用Jenkins Script Console(或groovy CLI命令)尝试解密您拥有的秘密值:

import hudson.util.Secret

Secret a = Secret.fromString('my secret value')
String ciphertext = a.getEncryptedValue()
println ciphertext
// '{AQAAABAAAAAQdIQUuG2AhKoV7mCIcd3PXBdw8ItgchIrvQrQ=}'
// or similar; will change with each new secret object

Secret b = Secret.decrypt(ciphertext)
String plaintext = b.getPlainText()
println plaintext
// 'my secret value'

答案 1 :(得分:0)

  host=http://$JENKINS_USERNAME:$JENKINS_PASSWORD@localhost:8080
 CRUMB=$(curl -s "$host"'/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
 encrypted_passphrase=$(curl  -H "$CRUMB" -d "script=println(hudson.util.Secret.fromString('password').getEncryptedValue())" -X POST $host/scriptText)