当密码被加密并存储到credentials.xml时,我使用的是secrets / master.key。但是恢复相同的credentials.xml和master.key集合并不适用于新的jenkins设置。我甚至试图恢复secret.key但这也没有用。
我还注意到,对于相同的字符串,credentials.xml中的ecrypted字符串也不相同。 我正在尝试自动化jenkins设置。有没有办法可以获得jenkins从bash生成的加密密码?
答案 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)