developer tip

Jenkins의 credentials.xml에서 암호 추출

copycodes 2021. 1. 5. 08:13
반응형

Jenkins의 credentials.xml에서 암호 추출


Jenkins에 SSH 자격 증명을 추가했습니다.

안타깝게도 SSH 암호를 잊어 버렸습니다. 이제 Jenkins의 자격 증명 아카이브에서 가져오고 싶습니다 ${JENKINS_HOME}/credentials.xml.

해당 XML 문서에는 XML 태그 <passphrase>또는 <password>.

일반 텍스트 암호를 검색하려면 어떻게해야합니까?


을 방문하여 Jenkins의 설치 스크립트 콘솔을 엽니 다 http(s)://${JENKINS_ADDRESS}/script.

거기에서 다음 Groovy 스크립트를 실행하십시오.

println( hudson.util.Secret.decrypt("${ENCRYPTED_PASSPHRASE_OR_PASSWORD}") )

찾고 ${ENCRYPTED_PASSPHRASE_OR_PASSWORD}있는 <password>또는 <passphrase>XML 요소 의 암호화 된 내용은 어디에 있습니까 ?


오래되었다는 건 알지만 ... 파이프 라인을 사용하면 매우 간단합니다. 다음은 콘솔에 자격 증명을 인쇄하는 파이프 라인의 예입니다.

node {
    def creds

    stage('Sandbox') {
        withCredentials([usernamePassword(credentialsId: 'my-creds', passwordVariable: 'C_PASS', usernameVariable: 'C_USER')]) {
            creds = "\nUser: ${C_USER}\nPassword: ${C_PASS}\n"
        }

        println creds
    }
}

이 파이프 라인을 실행하면 콘솔에 다음이 생성됩니다.

Started by user First Last (username)
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /jenkins/workspace/sandbox
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Sandbox)
[Pipeline] withCredentials
[Pipeline] {
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] echo

User: testuser
Password: Ab37%ahc*z

[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

여기서 트릭은 자격 증명이 withCredentials블록 내부에서만 마스킹된다는 것 입니다. 블록 외부에 정의 된 변수에 할당 한 다음 해당 변수를 블록 외부에 인쇄하면 마스킹이 적용되지 않습니다. 이것은 버그로보고되었지만 아무런 작업도 수행되지 않았습니다.


먼저 value관심있는 자격 증명 항목의 암호 필드 속성에 편리하게 배치 된 암호화 된 값을 가져와야합니다. Jenkins UI에서 자격 증명 항목으로 이동하여 암호 필드에서 요소 검사를 클릭하고 해당 항목을 복사합니다. value속성 (예 :{AQAABAAAa6VBbyzg5AWMW2RnfaBaj46}

그런 다음 이동하여 JENKINS_URL/script실행하십시오 println( hudson.util.Secret.decrypt("{AQAABAAAa6VBbyzg5AWMW2RnfaBaj46}") ). 암호 해독 된 암호가 입력 필드 아래에 나타납니다.


If you are using the Jenkins Credential Binding Plugin, you can get it to write your password to a file. You can't just output to the console, as the plugin will ***** it out.

Windows에서 암호 텍스트를 가져 오기위한 자격 증명 바인딩 플러그인 구성


Yes you can get it back. It is AES encrypted and you have to do some things before like searching for the passphrase. Have a look into the Secret class.

But you have look, there are already some scripts out there:

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

More information and a way to do it with java, can you find here:

What password encryption Jenkins is using?

ReferenceURL : https://stackoverflow.com/questions/37683143/extract-passphrase-from-jenkins-credentials-xml

반응형