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.
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
'developer tip' 카테고리의 다른 글
OS X Mavericks에 대한 Sublime Text 3 및 터미널 프롬프트? (0) | 2021.01.05 |
---|---|
Angular의 서버에서 텍스트 / csv 콘텐츠를 파일로 다운로드 (0) | 2021.01.05 |
템플릿 클래스에 대해 friend operator << 오버로딩 (0) | 2021.01.05 |
드로어 블에 저장된 이미지의 URI 가져 오기 (0) | 2021.01.05 |
Android Studio에서 tcpip를 통해 adb를 사용 하시겠습니까? (0) | 2021.01.05 |