2016-06-07 3 views
19

Я добавил учетные данные SSH для Дженкинса.Извлечь кодовую фразу из учетных данных Jenkins. Xml

К сожалению, я забыл парольную фразу SSH и теперь хотел бы получить ее из регистрационного архива Jenkins, который находится по адресу ${JENKINS_HOME}/credentials.xml.

Этот XML-документ, похоже, имеет учетные данные, зашифрованные в тегах XML <passphrase> или <password>.

Как я могу получить кодовую фразу простого текста?

ответ

46

Откройте консоль сценариев установки Jenkins, посетив http(s)://${JENKINS_ADDRESS}/script.

Там, выполнить следующий скрипт: Groovy

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

где ${ENCRYPTED_PASSPHRASE_OR_PASSWORD} это зашифрованное содержимое <password> или <passphrase> XML элемент, который вы ищете.

+9

И для того, чтобы получить значение пароля в '$ {ENCRYPTED_PASSPHRASE_OR_PASSWORD}': перейти на учетные данные, обновление, в браузере «Смотрите исходный код», и вы получите зашифрованный пароль в поле данных для пароль. Затем используйте эту функцию. – Keymon

+0

Работает как шарм –

1

Да, вы можете вернуть его. Это AES зашифровано, и вам нужно что-то сделать, прежде чем искать фразу. Посмотрите на класс Secret.

Но вы посмотрите, есть уже некоторые скрипты там:

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

Больше информации и способ сделать это с Java, вы можете найти здесь:

What password encryption Jenkins is using?

2

Если вы используете Jenkins Credential Binding Plugin, вы можете получить его, чтобы записать свой пароль в файл. Вы не можете просто выводить на консоль, так как плагин будет *****.

Credential Binding Plugin configuration to get password text on Windows

+0

В качестве альтернативы вы можете каким-то образом скрыть пароль, чтобы плагин не мог его пропустить. Например. как команда unix shell: echo '$ PASS | sed -e '/ ./&-/ g'? '. –

Смежные вопросы