Jenkins 是一款功能强大的自动化服务器,在持续集成与交付(CI/CD)领域应用广泛。不过,用户在使用过程中,尤其是首次接触该系统或系统重启后,常常会遇到登录方面的问题。要是 Jenkins 突然要求输入用户名和密码,而你又不知道去哪里找,别着急,这篇指南会告诉你原因以及如何重新获取访问权限。
一、了解 Jenkins 认证机制
(一)首次登录(基于密钥)
在初次安装 Jenkins 时,系统采用的是基于密钥的认证方式。通常会生成一个初始管理员密码,并将其存储在 Jenkins 主目录下的某个文件中。完成初始设置以及配置管理员账户时,就需要用到这个密码。
(二)后续登录(用户名和密码)
完成初始设置后,登录 Jenkins 就得使用用户名和密码了。要是你之前跳过了创建管理员账户这一步,或者忘记了登录凭证,那就得想办法找回或重置,才能重新登录系统。
二、查找 Jenkins 凭证的位置
(一)初始管理员密码(首次设置时)
初始管理员密码的存储位置如下:
- Linux 系统:
/var/lib/jenkins/secrets/initialAdminPassword
- Windows 系统:
%JENKINS_HOME%\secrets\initialAdminPassword
获取密码的方法如下:
- 使用文本编辑器或命令行工具打开相应文件。
- Linux 系统下,在终端输入
cat /var/lib/jenkins/secrets/initialAdminPassword
。 - Windows 系统则用记事本或其他文本编辑器打开文件。
- Linux 系统下,在终端输入
- 然后使用获取到的密码,以
admin
为用户名进行登录。
(二)自定义管理员凭证(完成设置后)
如果在设置过程中创建了管理员账户,那就使用当时配置的用户名和密码登录。要是忘记了这些凭证,那就继续往下看如何重置。
三、解决登录问题的步骤
(一)获取初始管理员密码(适用于设置未完成的情况)
- 按照前面说的方法找到
initialAdminPassword
文件。 - 以
admin
为用户名,用获取到的密码登录系统。
(二)重置凭证(已经设置过管理员用户但忘记凭证时)
这里有两种方法供你选择:
方法一:通过配置文件重置密码
- 停止 Jenkins 服务:
- Linux 系统下,在终端输入
sudo systemctl stop jenkins
。 - Windows 系统则从服务应用程序中找到 Jenkins 服务并停止它。
- Linux 系统下,在终端输入
- 编辑
config.xml
文件:- 先找到 Jenkins 的主目录。
- 打开
config.xml
文件,找到<useSecurity>true</useSecurity>
这个标签。 - 把它改成
<useSecurity>false</useSecurity>
或者直接删除这个标签。
- 重启 Jenkins 服务:
- Linux 系统下,在终端输入
sudo systemctl start jenkins
。 - Windows 系统则从服务应用程序中重启 Jenkins 服务。
- Linux 系统下,在终端输入
- 此时无需凭证即可登录。登录后重新启用安全设置,并创建新的管理员用户。
方法二:通过命令行或脚本控制台创建新管理员用户
- 打开 Jenkins 的命令行界面(CLI)或脚本控制台。
- 运行以下 Groovy 脚本创建新的管理员用户:
jenkins.model.Jenkins.instance.securityRealm.createAccount('newAdmin', 'newPassword')
- 最后使用新创建的用户名和密码登录系统。
四、凭证管理的最佳实践
- 安全存储:将 Jenkins 凭证妥善保存在密码管理器中,确保安全。
- 定期备份:定期备份 Jenkins 的配置文件和主目录,以防万一。
- 外部认证:考虑将 Jenkins 与 LDAP 或 SSO 等外部认证系统集成,简化用户管理工作。
虽然 Jenkins 登录问题可能会让人头疼,但只要了解了认证过程,知道如何找回或重置凭证,就能快速解决问题,重新获得系统访问权限。按照本指南的步骤操作,你就能轻松应对这些挑战,维持一个安全高效的 CI/CD 环境。