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

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

最简单的解决scheme是完全禁用安全性 – 在/var/lib/jenkins/config.xml文件中将其更改为false

 <useSecurity>true</useSecurity> 

然后只需重新启动Jenkins,进入pipe理面板,并再次设置一切。

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

 <passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash> 

完成此操作后,只需重新启动Jenkins并使用此密码login即可:

 test 

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

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

 salt:sha256("password{salt}") 

所以,如果你的盐是bar ,你的密码是foo那么你可以生产这样的SHA256:

 echo -n 'foo{bar}' | sha256sum 

作为结果,您应该获得7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349 。 把哈希和盐放在<passwordHash>

 <passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash> 

重新启动Jenkins,然后尝试使用密码foologin。 然后重置您的密码到别的东西。 (Jenkins在默认情况下使用bcrypt,并且一轮SHA256不是一种安全的存储密码的方式,当您重置密码时,会得到一个bcrypt hash存储。

在El-Capitan的config.xml中找不到

在/ var / lib中/jenkins/

它可用于

〜/ .jenkins

然后在其他提到打开config.xml文件,并作出以下更改

  • 在这里用<useSecurity>true</useSecurity>replace<useSecurity>false</useSecurity>

  • 删除<authorizationStrategy><securityRealm>

  • 保存并重新启动jenkins( sudo服务jenkins重新启动

修改的答案是正确的。 然而,我认为应该提到/var/lib/jenkins/config.xml看起来像这样,如果你已经激活“基于项目的matrix授权策略”。 删除/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> 

如果您使用matrix权限(可能容易适用于其他login方法),请在不禁用安全的情况下重置它:

  1. config.xml ,将disableSignup设置为false
  2. 重新启动 Jenkins。
  3. 转到Jenkins网页, 注册一个新用户
  4. config.xml ,复制<permission>hudson.model.Hudson.Administer:username</permission>行之一,并用新用户replaceusername
  5. 如果是私人服务器,请在config.xml中将disableSignup设置为true
  6. 重新启动 Jenkins。
  7. 转到Jenkins网页并以新用户身份login
  8. 重置原始用户的密码
  9. 以原始用户身份login

可选清理:

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

没有证券在这个答案中受到伤害。

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

 sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml 

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

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

 sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml sudo /etc/init.d/jenkins restart 

它会从您的config.xml根configuration文件中删除useSecurityauthorizationStrategy行,并重新启动您的Jenkins。

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


在获得对Jenkins的访问权后,您可以通过select访问控制/安全领域来重新启用“ configuration全局安全性”页面中的安全性 。 之后不要忘记创buildpipe理员用户 。

 \.jenkins\secrets\initialAdminPassword 

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

更改<useSecurity>true</useSecurity><useSecurity>false</useSecurity>是不够的,你应该删除<authorizationStrategy><securityRealm>元素,并重新启动你的jenkins服务器做sudo service jenkins restart

记住这一点,将<usesecurity>设置为false只会对您造成问题,因为这些说明在这里的官方文档中提到。

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

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

在这个文件里面你可以改变代码

 <useSecurity>true</useSecurity> 

至,

 <useSecurity>false</useSecurity> 

简单的方法是使用pipe理员psw与您的pipe理员用户login:

  • 更改为root用户: sudo su -
  • 复制密码: xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • 用pipe理员login,然后在密码input框上按ctrl + v

如果你没有安装xclip,请安装:

  • $ sudo apt-get install xclip

我有类似的问题,在ArtB的回复之后,

我发现我的用户没有正确的configuration。 所以我做了什么:

注意:手动修改这样的XML文件是有风险的。 这样做风险自负。 由于我已经被locking了,所以我没有太多的损失。 AFAIK最坏的情况我会删除〜/ .jenkins / config.xml文件作为prev后提到。

**> 1. ssh到jenkins机器

  1. cd〜/ .jenkins(我想有些安装将它放在/var/lib/jenkins/config.xml下,但不是在我的情况下)
  2. vi config.xml,并在authorizationStrategy xml标记下,添加下面的部分(只使用我的用户名,而不是“put-your-username”)
  3. 重新启动jenkins。 在我的情况下,作为根服务tomcat7停止; ; 服务tomcat7启动
  4. 尝试再次login。 (为我工作)**

加:

 <permission>hudson.model.Computer.Build:put-your-username</permission> <permission>hudson.model.Computer.Configure:put-your-username</permission> <permission>hudson.model.Computer.Connect:put-your-username</permission> <permission>hudson.model.Computer.Create:put-your-username</permission> <permission>hudson.model.Computer.Delete:put-your-username</permission> <permission>hudson.model.Computer.Disconnect:put-your-username</permission> <permission>hudson.model.Hudson.Administer:put-your-username</permission> <permission>hudson.model.Hudson.ConfigureUpdateCenter:put-your-username</permission> <permission>hudson.model.Hudson.Read:put-your-username</permission> <permission>hudson.model.Hudson.RunScripts:put-your-username</permission> <permission>hudson.model.Hudson.UploadPlugins:put-your-username</permission> <permission>hudson.model.Item.Build:put-your-username</permission> <permission>hudson.model.Item.Cancel:put-your-username</permission> <permission>hudson.model.Item.Configure:put-your-username</permission> <permission>hudson.model.Item.Create:put-your-username</permission> <permission>hudson.model.Item.Delete:put-your-username</permission> <permission>hudson.model.Item.Discover:put-your-username</permission> <permission>hudson.model.Item.Read:put-your-username</permission> <permission>hudson.model.Item.Workspace:put-your-username</permission> <permission>hudson.model.Run.Delete:put-your-username</permission> <permission>hudson.model.Run.Update:put-your-username</permission> <permission>hudson.model.View.Configure:put-your-username</permission> <permission>hudson.model.View.Create:put-your-username</permission> <permission>hudson.model.View.Delete:put-your-username</permission> <permission>hudson.model.View.Read:put-your-username</permission> <permission>hudson.scm.SCM.Tag:put-your-username</permission> 

现在,你可以去不同的方向。 例如,我有github oauth集成,所以我可以试着用下面的东西replaceauthorizationStrategy:

注意:它在我的情况下工作,因为我有一个特定的github oauth插件已经configuration。 所以比以前的解决scheme风险更大。

  <authorizationStrategy class="org.jenkinsci.plugins.GithubAuthorizationStrategy" plugin="github-oauth@0.14"> <rootACL> <organizationNameList class="linked-list"> <string></string> </organizationNameList> <adminUserNameList class="linked-list"> <string>put-your-username</string> <string>username2</string> <string>username3</string> <string>username_4_etc_put_username_that_will_become_administrator</string> </adminUserNameList> <authenticatedUserReadPermission>true</authenticatedUserReadPermission> <allowGithubWebHookPermission>false</allowGithubWebHookPermission> <allowCcTrayPermission>false</allowCcTrayPermission> <allowAnonymousReadPermission>false</allowAnonymousReadPermission> </rootACL> </authorizationStrategy> 

编辑文件$ JENKINS_HOME / config.xml并使用以下命令更改de安全性configuration:

 <authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/> 

之后,重新启动jenkins。