Jenkins 重置管理员登录密码

环境:Linux,Tomcat8(可选),JDK8

STEP-1. 首先的话我们要先找到 Jenkins 全局配置文件 config.xml(下面提供三种不同安装方式查找配置文件的方法):

方式一:如果不是使用 WAR 进行部署,直接通过命令将 Jenkins 配置成服务

cd /var/lib/jenkins/
# 查看 config.xml 文件
less config.xml

方式二:如果使用的是 Tomcat 部署的 WAR 包,假如 Tomcat 的安装路径是:/usr/local/tomcat8/

# 去 tomcat 的项目路径
cd /usr/local/tomcat8/webapps
# 找到 jenkins 目录
cd jenkins
# 查看 config.xml 文件
less config.xml

方式三:通过 java -jar jenkins.war 方式运行 Jenkins

# 首先查看运行 Jenkins 的用户
ps -ef | grep jenkis
# 显示如下
roc      21465     1  0 Feb17 ?        00:02:50 java -jar jenkins.war --httpPort=8090 --prefix=/jenkins
roc      25480 24684  0 11:25 pts/0    00:00:00 grep --color=auto jenkins
# 前面的 roc 就是运行 Jenkins 的用户,然后进入用户的主目录。
cd /home/roc # 如果就是当前登录的用户,则可以直接 cd ~
# 进入 Jenkins 的配置目录(该目录默认是隐藏的)
cd .jenkins 
# 查看 config.xml 文件
less config.xml

STEP-2. 在配置文件中找到以下内容:

<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">
     <!-- 忽略部分代码 -->
    <permission>hudson.model.Computer.Build:authenticated</permission>
    <permission>hudson.model.Hudson.Administer:root</permission>
    <permission>hudson.model.Hudson.Read:authenticated</permission>
    <permission>hudson.model.View.Create:authenticated</permission>
    <permission>hudson.model.View.Delete:authenticated</permission>
    <permission>hudson.model.View.Read:anonymous</permission>
    <permission>hudson.model.View.Read:authenticated</permission>
    <permission>hudson.scm.SCM.Tag:authenticated</permission>
    <!-- 忽略部分代码 -->
</authorizationStrategy>

最重要的是找到 authorizationStrategy 也就是 Jenkins 的授权策略,然后找到管理员账户权限:<permission>hudon.model.Hudson.Administer:root</permission> 这里的 root 就是管理员的用户名,这里的用户名是在安装 Jenkins 时设置的,也有可能是其他,例如:admin,administrator 之类的。不管是什么用户名都要注意的是使用 hudon.model.Hudson.Administer 标识的都是系统的管理员。

【注】如果 authorizationStrategy 是 hudson.security.FullControlOnceLoggedInAuthorizationStrategy 则任何一个用户都是管理员,直接按第三步操作即可。

<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy">
     <denyAnonymousReadAccess>true</denyAnonymousReadAccess>
 </authorizationStrategy>

STEP-3. 修改管理员的登陆密码。

进入存放用户的目录,然后找到以用户名开头的目录(假如管理员的用户名为 root ):

# Jenkins 存放用户的目录
cd users
ls
# 显示如下:
test_12345643213456  root_123456765345432  users.xml
cd root_123456765345432 # 进入该用户的配置目录
ls
config.xml # 该用户的配置文件

接下来在 config.xml 配置文件中找到 <passwordHash> 节点

<hudson.security.HudsonPrivateSecurityRealm_-Details>
      <passwordHash>#jbcrypt:加密的密码</passwordHash>
</hudson.security.HudsonPrivateSecurityRealm_-Details>

Jenkins 的密码是使用 Java 加密工具 jBCrypt 生成的,所以可以随便生成一个密码来替换掉之前的密码,例如使用加密后的 123456 来替换,123456 加密后为:$2a$10$SRqhubr8eaDYxjgTcNjlOeJQJBpIVEYaJmMK2v5dgTqYpD09hMaAi (生成的加密字符串并不是唯一的,但是都可用)

接下来保存配置文件,然后重新启动 Jenkins,接下来就可以使用密码 123456 来进行登录了。(切记正式环境登录之后一定要改密码,改密码,改密码,加粗说三遍

登录成功之后,点击【系统管理】-【管理用户】打开用户列表,然后点击【设置】小齿轮对用户进行管理。

在用户设置界面,找到密码这一栏,修改完密码保存即可,以后要是忘了也可以通过以上步骤进行重置。

【注】对于想要删除的用户,点击红色图标即可删除。

发表评论

邮箱地址不会被公开。 必填项已用*标注