如何从命令行重置Jenkins安全设置?

rya*_*zec 209 linux security command-line jenkins

有没有办法从命令行重置所有(或只是禁用安全设置)没有用户/密码,因为我已设法完全锁定自己Jenkins

Now*_*ker 265

最简单的解决方案是完全禁用安全-变化truefalse/var/lib/jenkins/config.xml文件中.

<useSecurity>true</useSecurity>
Run Code Online (Sandbox Code Playgroud)

然后重新启动Jenkins

sudo service jenkins restart
Run Code Online (Sandbox Code Playgroud)

然后转到管理面板并再次设置所有内容.

如果你是从一个docker在k8s pod中运行你的Jenkins,这是我的情况并且无法运行service命令,那么你可以通过删除pod来重启Jenkins:

kubectl delete pod <jenkins-pod-name>
Run Code Online (Sandbox Code Playgroud)

一旦命令发出,k8s将终止旧的pod并开始一个新的pod.

  • `sudo service jenkins restart` (12认同)
  • 对于那些找不到它们的人,他们的config.xml在你的终端中使用`find/-name"config.xml"`. (10认同)
  • 我需要重新启动Jenkins才能进行更改. (3认同)

Ars*_*eny 170

另一种方法是手动编辑用户的配置文件(例如/var/lib/jenkins/users/username/config.xml)并更新passwordHash的内容:

<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
Run Code Online (Sandbox Code Playgroud)

完成此操作后,只需重新启动Jenkins并使用以下密码登录:

test
Run Code Online (Sandbox Code Playgroud)

  • `<passwordHash>`xml标签是`<hudson.security.HudsonPrivateSecurityRealm_-Details>`的子标签.查看默认管理员用户,了解总XML结构. (2认同)
  • 这是一个很好的解决方案,可以保证安装的安全.出于好奇,如何生成密码哈希? (2认同)
  • 修改 C:\Users\&lt;USER&gt;\.jenkins\users\admin 中存在的文件内容有助于解决问题 (2认同)

rya*_*zec 44

我发现有问题的文件位于/ var/lib/jenkins中,名为config.xml,修改后修复了该问题.


uck*_*man 41

<passwordHash>元素users/<username>/config.xml将接受格式的数据

salt:sha256("password{salt}")
Run Code Online (Sandbox Code Playgroud)

所以,如果您的盐bar和密码是,foo那么您可以像这样生成SHA256:

echo -n 'foo{bar}' | sha256sum
Run Code Online (Sandbox Code Playgroud)

你应该得到7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349结果.取哈希并将其与盐一起放入<passwordHash>:

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
Run Code Online (Sandbox Code Playgroud)

重启Jenkins,然后尝试使用密码登录foo.然后将密码重置为其他内容.(Jenkins默认使用bcrypt,并且一轮SHA256不是一种存储密码的安全方式.重置密码时会收到一个bcrypt哈希值.)


Dur*_*n.H 25

在El-Capitan 中无法找到config.xml

在/ var/lib中/詹金斯/

它可用于

〜/ .jenkins

然后在其他提到之后打开config.xml文件并进行以下更改

  • 在这种替换<useSecurity>true</useSecurity><useSecurity>false</useSecurity>

  • 删除<authorizationStrategy><securityRealm>

  • 保存并重新启动jenkins(sudo service jenkins restart)


use*_*338 19

修改的答案是正确的.然而,我认为应该提到的是,/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>
Run Code Online (Sandbox Code Playgroud)


l0b*_*0b0 14

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

  1. config.xml,设置disableSignupfalse.
  2. 重启 Jenkins.
  3. 转到Jenkins网页并注册新用户.
  4. config.xml,复制其中<permission>hudson.model.Hudson.Administer:username</permission>一行并替换username为新用户.
  5. 如果它是一个专用服务器,设置disableSignuptrueconfig.xml.
  6. 重启 Jenkins.
  7. 转到Jenkins网页并以新用户身份登录.
  8. 重置原始用户的密码.
  9. 以原始用户身份登录.

可选清理:

  1. 删除新用户.
  2. 删除中的临时<permission>config.xml.

在这个答案中没有任何证券受到伤害.


ken*_*orb 14

要在Linux中以简单的步骤禁用Jenkins安全性,请运行以下命令:

sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
Run Code Online (Sandbox Code Playgroud)

它将从根配置文件中删除useSecurity并排除并重新启动Jenkins.authorizationStrategyconfig.xml

另请参阅:在Jenkins网站上禁用安全性


获得对Jenkins的访问权限后,您可以通过选择" 访问控制/安全领域"在" 配置全局安全性"页面中重新启用安全性.之后别忘了创建admin用户.


Nic*_*ick 12

由于权限错误,您不小心将自己锁定在Jenkins之外,并且您没有服务器端访问权限切换到jenkins用户或root ...您可以在Jenkins中创建一个作业并将其添加到Shell脚本中:

sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
Run Code Online (Sandbox Code Playgroud)

然后单击立即构建并重新启动Jenkins(或者如果需要,则重新启动服务器!)


小智 11

我们可以在保持安全性的同时重置密码。

/ var / lib / Jenkins / users / admin /中的config.xml文件的行为类似于/ etc / shadow文件Linux或类似UNIX的系统或Windows中的SAM文件,因为它存储了帐户的密码。

如果您需要不登录而重设密码,则可以编辑此文件,并将旧的哈希替换为从bcrypt生成的新哈希:

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

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

现在,编辑config.xml文件:

...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
Run Code Online (Sandbox Code Playgroud)

插入新的哈希后,重置Jenkins:

(如果您在使用systemd的系统上):

sudo systemctl restart Jenkins
Run Code Online (Sandbox Code Playgroud)

您现在可以登录,并且没有让系统保持打开状态一秒钟。


小智 5

\.jenkins\secrets\initialAdminPassword
Run Code Online (Sandbox Code Playgroud)

从initialAdminPassword文件中复制密码并将其粘贴到Jenkins中.


小智 5

1 首先检查位置,如果您基于该位置安装 war 或 Linux 或 Windows

例如,如果在 Linux 和管理员用户下进行战争

/home/"User_NAME"/.jenkins/users/admin/config.xml

#jbcrypt 后转到此标签:

<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
Run Code Online (Sandbox Code Playgroud)

使用任何网站为 bcrypt 哈希生成器更改此密码

https://www.dailycred.com/article/bcrypt-calculator
Run Code Online (Sandbox Code Playgroud)

确保它以$2a开头,因为这个 jenkens 使用