是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?


当前回答

为了删除Windows操作系统中jenkins的默认安全性,

您可以遍历在/users/{UserName}/.jenkins中创建的Config.xml文件。

在这个文件中,您可以更改代码

<useSecurity>true</useSecurity>

To,

<useSecurity>false</useSecurity>

其他回答

windows下文件所在的目录config.xml

C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins\.jenkins

关于修改的答案是正确的。然而,我认为应该提到的是,如果你激活了“基于项目的矩阵授权策略”,/var/lib/jenkins/config.xml看起来就像这样。删除/var/lib/jenkins/config.xml并重新启动jenkins也可以做到这一点。我还删除了/var/lib/jenkins/users中的用户,从头开始。

<authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
    <permission>hudson.model.Computer.Configure:jenkins-admin</permission>
    <permission>hudson.model.Computer.Connect:jenkins-admin</permission>
    <permission>hudson.model.Computer.Create:jenkins-admin</permission>
    <permission>hudson.model.Computer.Delete:jenkins-admin</permission>
    <permission>hudson.model.Computer.Disconnect:jenkins-admin</permission>
    <!-- if this is missing for your user and it is the only one, bad luck -->
    <permission>hudson.model.Hudson.Administer:jenkins-admin</permission>
    <permission>hudson.model.Hudson.Read:jenkins-admin</permission>
    <permission>hudson.model.Hudson.RunScripts:jenkins-admin</permission>
    <permission>hudson.model.Item.Build:jenkins-admin</permission>
    <permission>hudson.model.Item.Cancel:jenkins-admin</permission>
    <permission>hudson.model.Item.Configure:jenkins-admin</permission>
    <permission>hudson.model.Item.Create:jenkins-admin</permission>
    <permission>hudson.model.Item.Delete:jenkins-admin</permission>
    <permission>hudson.model.Item.Discover:jenkins-admin</permission>
    <permission>hudson.model.Item.Read:jenkins-admin</permission>
    <permission>hudson.model.Item.Workspace:jenkins-admin</permission>
    <permission>hudson.model.View.Configure:jenkins-admin</permission>
    <permission>hudson.model.View.Create:jenkins-admin</permission>
    <permission>hudson.model.View.Delete:jenkins-admin</permission>
    <permission>hudson.model.View.Read:jenkins-admin</permission>
  </authorizationStrategy>

很多时候你没有权限编辑config.xml文件。

最简单的方法是返回config.xml,然后使用sudo命令删除。

使用命令sudo /etc/init.重启jenkinsd / jenkins重启

这将禁用Jenkins中的所有安全性,登录选项将消失

我们可以在打开安全系统的情况下重置密码。

/var/lib/Jenkins/users/admin/中的config.xml文件在某种程度上类似于Linux或类unix系统中的/etc/shadow文件或Windows中的SAM文件,因为它存储了帐户密码的散列。

如果您需要在不登录的情况下重置密码,您可以编辑这个文件并用bcrypt生成的新哈希替换旧的哈希:

$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'

这将输出您的哈希,带有前缀2a,这是Jenkins哈希的正确前缀。

现在,编辑config.xml文件:

...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...

一旦你插入了新的散列,重置Jenkins:

(如果你在systemd系统上):

sudo systemctl restart Jenkins

现在您可以登录了,而且您的系统一秒钟都没有打开。

如果你使用矩阵权限(可能很容易适应其他登录方法),在不禁用安全性的情况下重置它:

在config.xml中,将disableSignup设置为false。 重启詹金斯。 去詹金斯的网页,注册一个新用户。 在config.xml中,复制<permission>hudson.model.Hudson. xml中的一个。管理:username</permission>行,用新用户替换username。 如果它是私有服务器,在config.xml中将disableSignup设置为true。 重启詹金斯。 进入Jenkins网页,以新用户身份登录。 重置原用户密码。 以原用户登录。

可选的清理:

删除新用户。 删除config.xml中临时的<permission>行。

在此回答过程中,没有任何证券受到损害。