是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?
当前回答
步骤1:进入目录cd .jenkins/secrets,然后你会得到一个'initialAdminPassword'。
step-2: nano initialAdminPassword
你会得到一个密码
其他回答
我们可以在打开安全系统的情况下重置密码。
/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
现在您可以登录了,而且您的系统一秒钟都没有打开。
users/<username>/config.xml中的<passwordHash>元素将接受该格式的数据
salt:sha256("password{salt}")
所以,如果你的salt是bar,你的密码是foo,那么你可以像这样生成SHA256:
echo -n 'foo{bar}' | sha256sum
结果应该是7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349。将哈希值和盐一起放入<passwordHash>:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
重新启动Jenkins,然后尝试使用密码foo登录。然后将密码重置为其他密码。(Jenkins默认使用bcrypt,一轮SHA256并不是存储密码的安全方式。当你重置密码时,你会得到一个bcrypt哈希存储。)
关于修改的答案是正确的。然而,我认为应该提到的是,如果你激活了“基于项目的矩阵授权策略”,/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>
要在Linux中简单地禁用Jenkins安全性,运行以下命令:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
它将从config.xml根配置文件中删除usesecsecurity和authorizationStrategy行,并重新启动Jenkins。
请参见:禁用Jenkins网站的安全性
在获得Jenkins的访问权限后,您可以在配置全局安全性页面中通过选择访问控制/安全领域重新启用安全性。之后不要忘记创建admin用户。
将< usesecsecurity >true</ usesecsecurity >更改为< usesecsecurity >false</ usesecsecurity >是不够的,你应该删除<authorizationStrategy>和<securityRealm>元素,并通过执行sudo service jenkins restart重启jenkins服务器。
请记住,仅将< usesecsecurity >设置为false可能会给您带来问题,因为这些说明在这里的官方文档中提到了。
推荐文章
- 如何从终端/命令行调用VS代码编辑器
- 在Bash中检查变量是否存在于列表中
- 在Jar文件中运行类
- 查看PS命令的全部输出
- 如何在Windows命令提示符下运行.sh ?
- Linux命令将域名转换为IP
- 如何从命令行通过mysql运行一个查询?
- JavaScript:客户端验证与服务器端验证
- ASP。NET身份的默认密码散列器-它是如何工作的,它是安全的?
- 如何从命令行在windows中找到mysql数据目录
- 如何从命令行安装cygwin组件?
- 如何更改Git日志日期格式
- 如何使用GitHub Org Plugin从jenkins管道(jenkinsfile)触发另一个作业?
- 有效地测试Linux上的端口是否打开?
- 主体、使用者和主体之间的意义和区别是什么?