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"选项。
-
导航到"Manage Jenkins":
- 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
-
配置全局安全设置:
- 在"Manage Jenkins"页面中,点击"Configure Global Security"。
-
启用安全设置:
- 确保"Enable security"选项已选中。
- 选择一个合适的"Security Realm"(例如"Jenkins's own user database")。
- 选择一个合适的"Authorization"策略(例如"Matrix-based security")。
-
保存更改:
- 点击"Save"按钮保存更改。
3. 检查权限
确保您当前的用户具有足够的权限来管理用户。
-
导航到"Manage Jenkins":
- 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
-
配置全局安全设置:
- 在"Manage Jenkins"页面中,点击"Configure Global Security"。
-
检查权限:
- 在"Authorization"部分,确保您的用户具有"Manage Users"权限。
4. 使用命令行重置密码
如果上述方法都无法解决问题,您可以使用命令行工具来重置密码。
-
停止 Jenkins 服务:
shsudo systemctl stop jenkins -
进入 Jenkins 主目录:
shcd /var/lib/jenkins -
编辑
config.xml文件:shsudo nano config.xml -
禁用安全设置:
找到
<useSecurity>标签,并将其值设置为false。xml<useSecurity>false</useSecurity> -
启动 Jenkins 服务:
shsudo systemctl start jenkins -
访问 Jenkins:
打开浏览器,访问 Jenkins 的 URL(例如
http://<your-server-ip>:8080)。此时,您应该可以直接访问 Jenkins 而无需登录。 -
重置管理员密码:
- 导航到"Manage Jenkins" > "Manage Users"。
- 选择您的管理员账户。
- 点击"Configure"。
- 在"Password"字段中输入新的密码。
- 点击"Save"。
-
重新启用安全设置:
-
再次编辑
config.xml文件,将<useSecurity>标签的值设置为true。 -
重启 Jenkins 服务:
shsudo systemctl restart jenkins
-
5. 使用 Groovy 脚本重置密码
如果您有 Jenkins 的管理员权限,可以使用 Groovy 脚本来重置密码。
-
导航到"Script Console":
- 在 Jenkins 主页上,点击左侧菜单中的"Manage Jenkins"。
- 点击"Script Console"。
-
执行 Groovy 脚本:
groovyimport jenkins.model.* import hudson.security.* def instance = Jenkins.getInstance() def securityRealm = instance.getSecurityRealm() def user = securityRealm.createAccount('username', 'newpassword') instance.save()将
username和newpassword替换为您需要重置的用户名和新密码。
执行报错
遇到的 groovy.lang.MissingMethodException 错误是因为 hudson.security.SecurityRealm$None 类型的安全领域不支持 createAccount 方法。SecurityRealm$None 表示Jenkins当前配置为"不使用安全领域",在这种情况下,您无法直接创建用户。
解决方法
-
配置Jenkins使用内置用户数据库:
- 首先,确保Jenkins配置为使用内置的用户数据库。您可以在Jenkins的管理界面中进行配置。
-
使用
hudson.security.HudsonPrivateSecurityRealm:- 如果您希望使用Jenkins的内置用户数据库,可以使用
hudson.security.HudsonPrivateSecurityRealm类。
- 如果您希望使用Jenkins的内置用户数据库,可以使用
步骤
-
进入Jenkins管理界面:
- 登录Jenkins,进入"管理Jenkins" -> "配置全局安全"。
-
启用安全领域:
- 在"安全领域"部分,选择"Jenkins自身的用户数据库"。
- 选中"允许用户注册"选项(可选)。
-
保存配置:
- 保存配置后,Jenkins将使用内置的用户数据库。
- 再次执行groove脚本即可。
总结
通过以上步骤,您应该能够找到并使用"Manage Users"选项来重置 Jenkins 的管理员密码。