有没有办法在没有用户/密码的情况下从命令行重置所有(或者只是禁用安全设置),因为我设法将自己完全锁定在Jenkins
之外?
答案 0 :(得分:248)
最简单的解决方案是完全禁用安全性 - 将true
更改为false
文件中的/var/lib/jenkins/config.xml
。
<useSecurity>true</useSecurity>
然后通过
重新启动Jenkinssudo service jenkins restart
然后转到管理面板并再次设置所有内容。
如果你是从一个docker在k8s pod中运行你的Jenkins,这是我的情况并且无法运行service
命令,那么你可以通过删除pod来重启Jenkins:
kubectl delete pod <jenkins-pod-name>
发出命令后,k8s将终止旧pod并开始新的pod。
答案 1 :(得分:155)
另一种方法是手动编辑用户的配置文件(例如/var/lib/jenkins/users/username/config.xml)并更新 passwordHash 的内容:
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
完成此操作后,只需重新启动Jenkins并使用以下密码登录:
test
答案 2 :(得分:44)
我发现有问题的文件位于/ var / lib / jenkins中,名为config.xml,修改后修复了该问题。
答案 3 :(得分:35)
<passwordHash>
中的users/<username>/config.xml
元素将接受格式
salt:sha256("password{salt}")
因此,如果你的盐是bar
而你的密码是foo
,那么你可以像这样制作SHA256:
echo -n 'foo{bar}' | sha256sum
结果应该得到7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
。取哈希并将盐与<passwordHash>
:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
重新启动Jenkins,然后尝试使用密码foo
登录。然后将密码重置为其他内容。 (Jenkins默认使用bcrypt,并且一轮SHA256不是一种存储密码的安全方式。当你重置密码时,你会得到一个bcrypt哈希值。)
答案 4 :(得分:21)
在
中无法找到El-Capitan config.xml的/ var / lib中/詹金斯/
可在
中找到〜/ .jenkins
然后在其他提到之后打开 config.xml 文件并进行以下更改
使用input[:-len(input.lstrip("0123456789"))]
<useSecurity>true</useSecurity>
删除<useSecurity>false</useSecurity>
和<authorizationStrategy>
保存并重新启动jenkins( sudo service jenkins restart )
答案 5 :(得分:18)
修改的答案是正确的。然而,我认为如果你激活了“基于项目的矩阵授权策略”,应该提到/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>
答案 6 :(得分:14)
要在Linux中以简单的步骤禁用Jenkins安全性,请运行以下命令:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
它将从useSecurity
根配置文件中删除authorizationStrategy
和config.xml
行,然后重新启动Jenkins。
另请参阅:Jenkins网站上的Disable security
获得对Jenkins的访问权限后,您可以通过选择Access Control/Security Realm在配置全局安全性页面中重新启用安全性。之后不要忘记create the admin user。
答案 7 :(得分:14)
要重置而不禁用安全性,如果您正在使用矩阵权限(可能很容易适应其他登录方法):
config.xml
中,将 disableSignup
设为false
。config.xml
中,复制其中一条<permission>hudson.model.Hudson.Administer:username</permission>
行,并将 username
替换为新用户。disableSignup
中将 true
设置回config.xml
。可选清理:
<permission>
中的临时config.xml
行。在这个答案中没有任何证券受到伤害。
答案 8 :(得分:12)
由于权限错误,你不小心将自己锁定在Jenkins之外,并且你没有服务器端访问权限切换到jenkins用户或root ...你可以在Jenkins找一份工作并将其添加到Shell脚本:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
然后单击立即构建并重新启动Jenkins(或者如果需要,还可以重新启动服务器!)
答案 9 :(得分:9)
我们可以在保持安全性的同时重置密码。
/ 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文件:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
一旦插入新的哈希,请重置Jenkins:
(如果您使用的是systemd系统):
sudo systemctl restart Jenkins
您现在可以登录,并且没有让系统保持打开状态。
答案 10 :(得分:5)
\.jenkins\secrets\initialAdminPassword
从initialAdminPassword文件中复制密码并将其粘贴到Jenkins中。
答案 11 :(得分:4)
为了在Windows操作系统中删除jenkins的默认安全性,
您可以遍历在/ users / {UserName} /.jenkins中创建的文件Config.xml。
在此文件中,您可以更改
中的代码<useSecurity>true</useSecurity>
要,
<useSecurity>false</useSecurity>
答案 12 :(得分:4)
第1步:转到cd .jenkins / secrets目录,您将获得一个“ initialAdminPassword”。
第2步:nano initialAdminPassword
您将获得密码
答案 13 :(得分:3)
首先检查位置,如果您安装war或Linux或基于
的窗口例如,如果Linux下的战争和管理员用户
/家/ “USER_NAME”/。詹金斯/用户/管理员/ config.xml中
在#jbcrypt:
之后转到此标记<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
使用bcrypt哈希生成器的任何网站更改此密码
https://www.dailycred.com/article/bcrypt-calculator
确保以 $ 2a 开头,因为这个jenkens使用
答案 14 :(得分:2)
将<useSecurity>true</useSecurity>
更改为<useSecurity>false</useSecurity>
是不够的,您还应删除<authorizationStrategy>
和<securityRealm>
元素,然后通过执行sudo service jenkins restart
重新启动jenkins服务器。
请记住这一点,将<usesecurity>
设置为false
只会导致您遇到问题,因为这些说明在官方文档here中有提及。
答案 15 :(得分:1)
sudo su -
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
ctrl + v
。$ sudo apt-get install xclip
答案 16 :(得分:1)
詹金斯超过KUBENETES和Docker
对于 Kubernetes POD 管理的容器上的 Jenkins 有点复杂,因为:kubectl exec PODID --namespace=jenkins -it -- /bin/bash
您将允许直接访问容器运行Jenkins,但您将无权访问,sudo
,vi
并且许多命令都不可用,因此需要一种解决方法。
使用kubectl describe pod [...]
查找运行Pod的节点和容器ID (docker://...)
SSH
进入节点docker exec -ti -u root -- /bin/bash
以使用Root权限apt-get update
sudo apt-get install vim
第二个区别是Jenkins配置文件放在与永久卷的安装点对应的不同路径中,即/var/jenkins_home
,此位置可能在将来发生变化,检查它是否正在运行df
。
然后禁用安全性 - 在/var/jenkins_home/jenkins/config.xml
文件中将true更改为false。
<useSecurity>false</useSecurity>
现在只需重新启动Jenkins,就会导致容器和Pod死亡的动作,它会在几秒钟内再次创建,配置更新(并且所有机会就像vi,更新已擦除),这要归功于持久性体积。
整个解决方案已在Google Kubernetes Engine上测试过。 的更新强> 请注意,即使没有root访问权限,您也可以显示纯文本密码{/ 1}}。
ps -aux
答案 17 :(得分:1)
很多时候,您将无权编辑config.xml文件。
最简单的方法是退回config.xml
并使用sudo命令删除。
使用命令sudo /etc/init.d/jenkins restart
这将禁用Jenkins中的所有安全性,并且登录选项将消失
答案 18 :(得分:1)
使用bcrypt可以解决此问题。为尝试使用bash和python自动化过程的人扩展@Reem答案。
Orders[orderId, ... ,status, orderDate, expiredTimeInSeconds].
我在这里一直对密码进行硬编码,但是根据需要它可以是用户输入。另外,请确保添加db.getCollection('orders').aggregate(
[
{ $match : {status:"C"}},
{ $addFields: {expiryDate: { $add: [ "$orderDate", {$multiply:["$expiredTimeInSecond",1000]} ] } } },
{ $match : {expiryDate: { $gt : new Date()}}},
{ $limit : 100 }
]
)
,否则围绕Jenkins进行的其他任何命令都会失败。
答案 19 :(得分:0)
编辑文件$ JENKINS_HOME / config.xml并使用以下命令更改de security配置:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
之后重新启动Jenkins。
答案 20 :(得分:0)
我有一个类似的问题,并在ArtB回复之后,
我发现我的用户没有正确的配置。所以我做了什么:
注意:手动修改此类XML文件存在风险。这样做需要您自担风险。由于我已被锁定,我没有太多损失。 AFAIK Worst案例我会删除〜/ .jenkins / config.xml文件,如上所述。
**指1. ssh到jenkins机器
- cd~ / .jenkins(我猜有些安装将它放在/var/lib/jenkins/config.xml下,但不是我的情况)
- vi config.xml,在authorizationStrategy xml标签下,添加以下部分(仅使用我的用户名而不是“put-your-username”)
- 重启jenkins。在我的情况下作为root服务tomcat7停止; ; service tomcat7 start
- 尝试重新登录。 (为我工作)**
醇>
下
添加:
<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集成,所以我可以尝试用下面的代码替换authorizationStrategy:
注意:它在我的情况下工作,因为我有一个已经配置的特定github oauth插件。所以它比以前的解决方案风险更大。
<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>
答案 21 :(得分:0)
要非常简单地禁用安全性和启动向导,请使用JAVA属性:
-Djenkins.install.runSetupWizard=false
有趣的是,您可以在Docker映像中使用它,这样您的容器将始终在没有登录屏幕的情况下立即启动:
# Dockerfile
FROM jenkins/jenkins:lts
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
请注意,如其他人所述,Jenkins config.xml位于映像中的/var/jenkins_home
中,但是使用sed
从Dockerfile对其进行修改会失败,因为(大概)config.xml在服务器启动之前不存在。
答案 22 :(得分:0)
对于使用macOS的用户,新版本只能由自制软件安装。因此要休息,此命令行必须使用:
brew services restart jenkins-lts