安装 Jenkins 后无法访问用户名或密码且忘记这些凭证怎么办?

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 系统则用记事本或其他文本编辑器打开文件。
  • 然后使用获取到的密码,以admin为用户名进行登录。

(二)自定义管理员凭证(完成设置后)

如果在设置过程中创建了管理员账户,那就使用当时配置的用户名和密码登录。要是忘记了这些凭证,那就继续往下看如何重置。

三、解决登录问题的步骤

(一)获取初始管理员密码(适用于设置未完成的情况)

  • 按照前面说的方法找到initialAdminPassword文件。
  • admin为用户名,用获取到的密码登录系统。

(二)重置凭证(已经设置过管理员用户但忘记凭证时)

这里有两种方法供你选择:

方法一:通过配置文件重置密码
  • 停止 Jenkins 服务:
    • Linux 系统下,在终端输入sudo systemctl stop jenkins
    • Windows 系统则从服务应用程序中找到 Jenkins 服务并停止它。
  • 编辑config.xml文件:
    • 先找到 Jenkins 的主目录。
    • 打开config.xml文件,找到<useSecurity>true</useSecurity>这个标签。
    • 把它改成<useSecurity>false</useSecurity>或者直接删除这个标签。
  • 重启 Jenkins 服务:
    • Linux 系统下,在终端输入sudo systemctl start jenkins
    • Windows 系统则从服务应用程序中重启 Jenkins 服务。
  • 此时无需凭证即可登录。登录后重新启用安全设置,并创建新的管理员用户。
方法二:通过命令行或脚本控制台创建新管理员用户
  • 打开 Jenkins 的命令行界面(CLI)或脚本控制台。
  • 运行以下 Groovy 脚本创建新的管理员用户:
    jenkins.model.Jenkins.instance.securityRealm.createAccount('newAdmin', 'newPassword')
  • 最后使用新创建的用户名和密码登录系统。

四、凭证管理的最佳实践

  • 安全存储:将 Jenkins 凭证妥善保存在密码管理器中,确保安全。
  • 定期备份:定期备份 Jenkins 的配置文件和主目录,以防万一。
  • 外部认证:考虑将 Jenkins 与 LDAP 或 SSO 等外部认证系统集成,简化用户管理工作。

虽然 Jenkins 登录问题可能会让人头疼,但只要了解了认证过程,知道如何找回或重置凭证,就能快速解决问题,重新获得系统访问权限。按照本指南的步骤操作,你就能轻松应对这些挑战,维持一个安全高效的 CI/CD 环境。

相关推荐
KeyPan4 分钟前
【Ubuntu与Linux操作系统:十二、LAMP平台与PHP开发环境】
android·java·linux·运维·服务器·ubuntu
NightReader14 分钟前
Ubuntu 24.04蓝牙失效之复活
linux·运维·ubuntu
苹果醋32 小时前
MySQL Binlog 同步工具go-mysql-transfer Lua模块使用说明
java·运维·spring boot·mysql·nginx
学Linux的语莫2 小时前
k8s之pod生命周期
linux·运维·docker·容器·kubernetes
petunsecn2 小时前
Jenkins触发器--在其他项目执行后构建
运维·jenkins
启明真纳3 小时前
k8s物料清单工具——KubeClarity
linux·运维·云原生·容器·kubernetes·云计算
wanhengidc3 小时前
国内大带宽服务器的应用场景
运维·服务器
weisian1513 小时前
Mysql--运维篇--主从复制和集群(主从复制I/O线程,SQL线程,二进制日志,中继日志,集群NDB)
运维·sql·mysql
誓约酱4 小时前
Linux下文件操作相关接口
linux·运维·服务器·c语言·c++·后端