Jenkins: Wie man das LDAP Passwort ändert

8

Meine Einrichtung verlangt von mir, dass ich mein LDAP-Passwort regelmäßig ändere.

In der Vergangenheit konnte ich die folgenden Schritte ausführen, um mein Passwort zu ändern: -

  • Erstellen Sie ein Base64-codiertes Passwort unter Ссылка
  • Bearbeiten Sie /var/lib/jenkins/config.xml und ändern Sie <managerPassword/> .

Die neueste Version von Jenkins verwendet jedoch nicht mehr <managerPassword/> . Stattdessen sehe ich <managerPasswordSecret/> .

Ich bin mir nicht sicher, wie ich das neue geheime Passwort erstellen soll, also habe ich Folgendes getan: -

  • Sicherung /var/lib/jenkins/config.xml first.
  • Bearbeiten Sie /var/lib/jenkins/config.xml und ändern Sie <useSecurity/> in false .
  • Starten Sie den Jenkins-Dienst neu.
  • Geh zu Jenkins.
  • LDAP-Sicherheit aktivieren.
  • Geben Sie ein neues LDAP-Passwort ein.
  • Speichern Sie es.
  • Öffnen Sie /var/lib/jenkins/config.xml und kopieren Sie <managerPasswordSecret/> .
  • Backup-Konfigurationsdatei wiederherstellen.
  • Ersetzen Sie <managerPasswordSecret/> durch den neuen Wert.

Das ist unglaublich kompliziert.

Gibt es eine einfachere Möglichkeit, meine LDAP-Passwortänderung in Zukunft beizubehalten?

Vielen Dank!

    
limc 18.08.2014, 13:31
quelle

4 Antworten

7

Sie können weiterhin & lt; managerPassword & gt;.

verwenden
  1. Erzeuge das neue verschlüsselte Passwort mit

    perl -e 'benutze MIME :: Base64; print encode_base64 ("yourNewPassword"); '

  2. Suchen Sie in Ihrer config.xml nach & lt; hudson & gt; / & lt; securityRealm & gt; / & lt; managerPasswordSecret & gt ;. Ändern Sie & lt; managerPasswordSecret & gt; nach & lt; managerPassword & gt; (sowohl vorher als auch nachher) und setzen Sie die Kodierung von # 1 zwischen ihnen. Speichern Sie die Datei.

  3. Starten Sie jenkins
  4. neu
  5. Melden Sie sich an und verwenden Sie die Benutzeroberfläche, und setzen Sie das LDAP Manager-Passwort auf das gleiche yourNewPassword zurück. config.xml sollte jetzt zurück zu & lt; managerPasswordSecret & gt;.
  6. Wenn Sie paranoid sind (wie ich), starten Sie jenkins erneut, um die neu geänderte Datei config.xml zu verwenden.
walrii 12.10.2015 22:29
quelle
3

Ich habe versucht, dasselbe zu tun, und das ist eine einfache Lösung (Verwendung von der Jenkins-Konsole):

%Vor%

Die Decodierung ist einfacher:

println(hudson.util.Secret.decrypt(HashFromConfigXmlHere));

Ich bin kein Jenkins / Java Master, also benutze es auf eigene Gefahr.

    
Dawid Gosławski 07.01.2015 14:58
quelle
1

Ich habe versucht, die Lösung von @alkuzad zur Verfügung gestellt und es funktioniert gut. Nur um zu verdeutlichen, dass Sie die Jenkins-Webkonsole nicht verwenden können, wenn das LDAP-Benutzerkennwort abgelaufen ist. Also, was ich getan habe, ist wie folgt (Ich habe groovy Skript-Plugin in Jenkins. Ich habe auch Run-Skript-Zugriff auf anonyme Benutzer - keine gute Idee, aber es ist die Art, wie ich zunächst gefunden, um dieses wiederkehrende Problem zu lösen).

  1. Heruntergeladene jenkins-cli.jar
  2. setze obigen Code in GroovyPasswordClass.txt (nicht zu vergessen, ein neues Passwort anstelle von VALUE_TO_ENCRYPT im Code zu verwenden)
  3. Starten Sie den jenkins server (die Anforderung, dass jenkins läuft)
  4. Führen Sie den Befehl unterhalb der Eingabeaufforderung
  5. aus

java -jar jenkins-cli.jar -s groovy GroovyPasswordClass.txt

Dadurch wird ein verschlüsseltes Passwort gedruckt.

Bessere Option

Nun, später habe ich eine bessere Möglichkeit gefunden, die Authentifizierung durchzuführen, wenn der Verzeichnisdienstanbieter MS Active Directory ist. In diesem Fall habe ich anstelle des LDAP-Plugins das Active Directory-Plugin für die Authentifizierung verwendet. Das fand ich besser, weil

1) Antwort ist schneller, wenn Active-Directory-Plugin anstelle von generischen LDAP-Protokoll-basierten Plugin verwendet 2) Das Active Directory-Plugin verwendet Benutzerdaten, mit denen der Jenkins-Dienst gestartet wurde und in Jenkins kein Benutzerkonto konfiguriert werden muss. Sie werden also nie eine Situation haben, dass Ihr Jenkins-Login nicht funktioniert, weil der für LDAP konfigurierte Benutzer ein abgelaufenes Passwort hat.

Ich hoffe, dies wird anderen helfen, dieses Problem zu lösen.

    
ashah 06.05.2016 05:10
quelle
0

Keine der obigen Lösungen funktionierte für mich mit einer neueren Version von Jenkins (2.78). Was funktionierte, war das Einfügen von managerPasswordSecret ohne Verschlüsselung. Sobald ich Jenkins lief, wurde das Passwort für mich verschlüsselt.

    
Roman Zenka 08.02.2018 23:09
quelle