Jenkins:如何更改LDAP密码

lim*_*imc 12 continuous-integration hudson jenkins

我的机构要求我定期更改我的LDAP密码.

过去,我能够执行以下步骤来更改密码: -

但是,Jenkins的最新版本不再使用<managerPassword/>.相反,我看到了<managerPasswordSecret/>.

我不知道如何生成新的密码,所以我做了以下事情: -

  • /var/lib/jenkins/config.xml先备份.
  • 编辑/var/lib/jenkins/config.xml并更改<useSecurity/>false.
  • 重启Jenkins服务.
  • 去詹金斯.
  • 启用LDAP安全性.
  • 输入新的LDAP密码.
  • 保存.
  • 打开/var/lib/jenkins/config.xml并复制<managerPasswordSecret/>.
  • 恢复备份配置文件.
  • 替换<managerPasswordSecret/>为新值.

这令人难以置信.

有没有更简单的方法让我在将来维护我的LDAP密码更改?

非常感谢!

wal*_*rii 8

您仍然可以使用<managerPassword>.

  1. 使用生成新的编码密码

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

  2. 在config.xml中,找到<hudson>/<securityRealm>/<managerPasswordSecret>.将<managerPasswordSecret>更改为<managerPassword>(包括之前和之后),并将#1之间的编码放在它们之间.保存文件.

  3. 重启jenkins
  4. 登录并使用UI,将LDAP管理员密码重置为相同的yourNewPassword.config.xml现在应该回到<managerPasswordSecret>.
  5. 如果你是偏执狂(像我一样),请重新启动jenkins以使用新修改的config.xml.

  • 正如@roman-zenka 上面提到的,这个解决方案不再有效,但你可以将未加密的密码放在 managerPasswordSecret 中,并在重新启动 Jenkins 时为你加密。 (3认同)

Rom*_*nka 7

对于较新版本的 Jenkins (2.78),上述解决方案都不适用于我。有效的是将 managerPasswordSecret 放在没有任何加密的情况下。一旦我运行 Jenkins,密码就为我加密了。

  • 只是为了清楚起见。旧的加密密码是在赞誉之间。要输入未加密的新密码,请输入_不带_荣誉。因此,从“&lt;managerPasswordSecret&gt;{encrypted_old_password}&lt;/managerPasswordSecret&gt;”转到“&lt;managerPasswordSecret&gt;new_plain_text_password&lt;/managerPasswordSecret&gt;”。重新启动 jenkins 时,这最终将导致 `&lt;managerPasswordSecret&gt;{encrypted_new_password}&lt;/managerPasswordSecret&gt;` (2认同)

Daw*_*ski 6

我试图做同样的事情,这是一个简单的解决方案(从 Jenkins 控制台使用):

import com.trilead.ssh2.crypto.Base64;
import javax.crypto.Cipher;
import jenkins.security.CryptoConfidentialKey;
import hudson.util.Secret;

CryptoConfidentialKey KEY = new CryptoConfidentialKey(Secret.class.getName());
Cipher cipher = KEY.encrypt();
String MAGIC = "::::MAGIC::::";


String VALUE_TO_ENCRYPT = "";
println(new String(Base64.encode(cipher.doFinal((VALUE_TO_ENCRYPT + MAGIC).getBytes("UTF-8")))));
Run Code Online (Sandbox Code Playgroud)

解码更简单:

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