有没有办法从命令行重置所有(或只是禁用安全设置)没有用户/密码,因为我已设法完全锁定自己Jenkins
?
最简单的解决方案是完全禁用安全-变化true
给false
在/var/lib/jenkins/config.xml
文件中.
true
然后重新启动Jenkins
sudo service jenkins restart
然后转到管理面板并再次设置所有内容.
如果你是从一个docker在k8s pod中运行你的Jenkins,这是我的情况并且无法运行service
命令,那么你可以通过删除pod来重启Jenkins:
kubectl delete pod
一旦命令发出,k8s将终止旧的pod并开始一个新的pod.
另一种方法是手动编辑用户的配置文件(例如/var/lib/jenkins/users/username/config.xml)并更新passwordHash的内容:
#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S
完成此操作后,只需重新启动Jenkins并使用以下密码登录:
test
我发现有问题的文件位于/ var/lib/jenkins中,名为config.xml,修改后修复了该问题.
该
元素users/
将接受格式的数据
salt:sha256("password{salt}")
所以,如果您的盐bar
和密码是,foo
那么您可以像这样生成SHA256:
echo -n 'foo{bar}' | sha256sum
你应该得到7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
结果.取哈希并将其与盐一起放入
:
bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
重启Jenkins,然后尝试使用密码登录foo
.然后将密码重置为其他内容.(Jenkins默认使用bcrypt,并且一轮SHA256不是一种存储密码的安全方式.重置密码时会收到一个bcrypt哈希值.)
在El-Capitan 中无法找到config.xml
在/ var/lib中/詹金斯/
它可用于
〜/ .jenkins
然后在其他提到之后打开config.xml文件并进行以下更改
在这种替换
用
删除
和
保存并重新启动jenkins(sudo service jenkins restart)
修改的答案是正确的.然而,我认为应该提到的是,/var/lib/jenkins/config.xml
如果您激活了"基于项目的矩阵授权策略" ,那么看起来就像这样.删除/var/lib/jenkins/config.xml
并重新启动jenkins也可以解决问题.我还删除了用户/var/lib/jenkins/users
从头开始.
hudson.model.Computer.Configure:jenkins-admin hudson.model.Computer.Connect:jenkins-admin hudson.model.Computer.Create:jenkins-admin hudson.model.Computer.Delete:jenkins-admin hudson.model.Computer.Disconnect:jenkins-admin hudson.model.Hudson.Administer:jenkins-admin hudson.model.Hudson.Read:jenkins-admin hudson.model.Hudson.RunScripts:jenkins-admin hudson.model.Item.Build:jenkins-admin hudson.model.Item.Cancel:jenkins-admin hudson.model.Item.Configure:jenkins-admin hudson.model.Item.Create:jenkins-admin hudson.model.Item.Delete:jenkins-admin hudson.model.Item.Discover:jenkins-admin hudson.model.Item.Read:jenkins-admin hudson.model.Item.Workspace:jenkins-admin hudson.model.View.Configure:jenkins-admin hudson.model.View.Create:jenkins-admin hudson.model.View.Delete:jenkins-admin hudson.model.View.Read:jenkins-admin
如果您正在使用矩阵权限(可能很容易适应其他登录方法),则在不禁用安全性的情况下重置它:
在config.xml
,设置disableSignup
为false
.
重启 Jenkins.
转到Jenkins网页并注册新用户.
在config.xml
,复制其中
一行并替换username
为新用户.
如果它是一个专用服务器,设置disableSignup
回true
在config.xml
.
重启 Jenkins.
转到Jenkins网页并以新用户身份登录.
重置原始用户的密码.
以原始用户身份登录.
可选清理:
删除新用户.
删除中的临时
行config.xml
.
在这个答案中没有任何证券受到伤害.
要在Linux中以简单的步骤禁用Jenkins安全性,请运行以下命令:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml sudo /etc/init.d/jenkins restart
它将从根配置文件中删除useSecurity
并排除并重新启动Jenkins.authorizationStrategy
config.xml
另请参阅:在Jenkins网站上禁用安全性
获得对Jenkins的访问权限后,您可以通过选择" 访问控制/安全领域"在" 配置全局安全性"页面中重新启用安全性.之后别忘了创建admin用户.
由于权限错误,您不小心将自己锁定在Jenkins之外,并且您没有服务器端访问权限切换到jenkins用户或root ...您可以在Jenkins中创建一个作业并将其添加到Shell脚本中:
sed -i 's/true/ false/' ~/config.xml
然后单击立即构建并重新启动Jenkins(或者如果需要,则重新启动服务器!)
我们可以在保持安全性的同时重置密码。
/ 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'
这将输出带有2a前缀的哈希,这是Jenkins哈希的正确前缀。
现在,编辑config.xml文件:
...#jbcrypt:REPLACE_THIS ...
插入新的哈希后,重置Jenkins:
(如果您在使用systemd的系统上):
sudo systemctl restart Jenkins
您现在可以登录,并且没有让系统保持打开状态一秒钟。
\.jenkins\secrets\initialAdminPassword
从initialAdminPassword文件中复制密码并将其粘贴到Jenkins中.