忘记jenkins密码,跳过密码登录发现没有manage user选项的重置密码的方法

1. 检查 Jenkins 版本

确保您使用的是最新版本的 Jenkins。某些功能可能在较旧版本中不可用。

sh 复制代码
java -jar /path/to/jenkins.war --version

如果版本较旧,可以考虑升级 Jenkins:

sh 复制代码
wget https://updates.jenkins.io/stable/latest/jenkins.war
sudo cp jenkins.war /path/to/jenkins.war
sudo systemctl restart jenkins

2. 检查安全配置

确保 Jenkins 的安全配置已启用。如果没有启用,您可能看不到"Manage Users"选项。

  1. 导航到"Manage Jenkins"

    • 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
  2. 配置全局安全设置

    • 在"Manage Jenkins"页面中,点击"Configure Global Security"。
  3. 启用安全设置

    • 确保"Enable security"选项已选中。
    • 选择一个合适的"Security Realm"(例如"Jenkins's own user database")。
    • 选择一个合适的"Authorization"策略(例如"Matrix-based security")。
  4. 保存更改

    • 点击"Save"按钮保存更改。

3. 检查权限

确保您当前的用户具有足够的权限来管理用户。

  1. 导航到"Manage Jenkins"

    • 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
  2. 配置全局安全设置

    • 在"Manage Jenkins"页面中,点击"Configure Global Security"。
  3. 检查权限

    • 在"Authorization"部分,确保您的用户具有"Manage Users"权限。

4. 使用命令行重置密码

如果上述方法都无法解决问题,您可以使用命令行工具来重置密码。

  1. 停止 Jenkins 服务

    sh 复制代码
    sudo systemctl stop jenkins
  2. 进入 Jenkins 主目录

    sh 复制代码
    cd /var/lib/jenkins
  3. 编辑 config.xml 文件

    sh 复制代码
    sudo nano config.xml
  4. 禁用安全设置

    找到 <useSecurity> 标签,并将其值设置为 false

    xml 复制代码
    <useSecurity>false</useSecurity>
  5. 启动 Jenkins 服务

    sh 复制代码
    sudo systemctl start jenkins
  6. 访问 Jenkins

    打开浏览器,访问 Jenkins 的 URL(例如 http://<your-server-ip>:8080)。此时,您应该可以直接访问 Jenkins 而无需登录。

  7. 重置管理员密码

    • 导航到"Manage Jenkins" > "Manage Users"。
    • 选择您的管理员账户。
    • 点击"Configure"。
    • 在"Password"字段中输入新的密码。
    • 点击"Save"。
  8. 重新启用安全设置

    • 再次编辑 config.xml 文件,将 <useSecurity> 标签的值设置为 true

    • 重启 Jenkins 服务:

      sh 复制代码
      sudo systemctl restart jenkins

5. 使用 Groovy 脚本重置密码

如果您有 Jenkins 的管理员权限,可以使用 Groovy 脚本来重置密码。

  1. 导航到"Script Console"

    • 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
    • 点击"Script Console"。
  2. 执行 Groovy 脚本

    groovy 复制代码
    import jenkins.model.*
    import hudson.security.*
    
    def instance = Jenkins.getInstance()
    def securityRealm = instance.getSecurityRealm()
    def user = securityRealm.createAccount('username', 'newpassword')
    instance.save()

    usernamenewpassword 替换为您需要重置的用户名和新密码。

执行报错

遇到的 groovy.lang.MissingMethodException 错误是因为 hudson.security.SecurityRealm$None 类型的安全领域不支持 createAccount 方法。SecurityRealm$None 表示Jenkins当前配置为"不使用安全领域",在这种情况下,您无法直接创建用户。

解决方法

  1. 配置Jenkins使用内置用户数据库

    • 首先,确保Jenkins配置为使用内置的用户数据库。您可以在Jenkins的管理界面中进行配置。
  2. 使用 hudson.security.HudsonPrivateSecurityRealm

    • 如果您希望使用Jenkins的内置用户数据库,可以使用 hudson.security.HudsonPrivateSecurityRealm 类。

步骤

  1. 进入Jenkins管理界面

    • 登录Jenkins,进入"管理Jenkins" -> "配置全局安全"。
  2. 启用安全领域

    • 在"安全领域"部分,选择"Jenkins自身的用户数据库"。
    • 选中"允许用户注册"选项(可选)。
  3. 保存配置

    • 保存配置后,Jenkins将使用内置的用户数据库。
    • 再次执行groove脚本即可。

总结

通过以上步骤,您应该能够找到并使用"Manage Users"选项来重置 Jenkins 的管理员密码。

相关推荐
还在忙碌的吴小二6 小时前
Jenkins CLI (jcli) 使用手册
运维·jenkins
ChangYan.6 小时前
Windows命令行(cmd)下快速查找文件路径(类似Linux下find命令)
linux·运维·服务器
陈让然6 小时前
VS Code新版本无法连接WSL ubuntu18.04
linux·运维·ubuntu
lpfasd1236 小时前
宝塔面板使用流程及注意事项
运维
小杰帅气6 小时前
神秘的环境变量和进程地址空间
linux·运维·服务器
胖咕噜的稞达鸭7 小时前
进程间的通信(1)(理解管道特性,匿名命名管道,进程池,systeam V共享内存是什么及优势)重点理解代码!
linux·运维·服务器·数据库
电气铺二表姐137744166157 小时前
超市冷柜专区电能计量方案:高能耗设备独立监测与优化
运维·物联网·能源
水上冰石7 小时前
查看k8s下Jenkins的插件在宿主机的路径
容器·kubernetes·jenkins
小北方城市网7 小时前
微服务接口设计实战指南:高可用、易维护的接口设计原则与规范
java·大数据·运维·python·微服务·fastapi·数据库架构
可爱又迷人的反派角色“yang”7 小时前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes