是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?


当前回答

我会在解决方案的基础上增加一些改进:

https://stackoverflow.com/a/51255443/5322871

在我的场景中,它部署了带有nfs卷的Swarm集群,为了执行密码重置,我做了以下工作:

附着在豆荚上:

$ docker exec -it <pod-name> bash

使用python生成哈希密码(不要忘记在你的引用密码之外指定字母b,方法hashpw需要一个以字节为单位的参数):

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

一旦进入容器,找到所有config.xml文件:

$ find /var/ -type f -iname "config.xml"

一旦确定,修改字段的值(在我的情况下,config.xml在另一个位置):

$ vim /var/jenkins_home/users/admin_9482805162890262115/config.xml
...
<passwordHash>#jbcrypt:YOUR_HASH</passwordHash>
...

重新启动服务:

docker service scale <service-name>=0
docker service scale <service-name>=1

希望这对任何人都有帮助。

其他回答

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

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

在这个文件中,您可以更改代码

<useSecurity>true</useSecurity>

To,

<useSecurity>false</useSecurity>

编辑$JENKINS_HOME/config.xml文件,修改去安全配置如下:

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

之后詹金斯重启。

对于使用macOS的用户来说,新版本只能通过自制软件安装。所以为了休息,这个命令行必须使用:

brew services restart jenkins-lts

要非常简单地禁用安全性和启动向导,请使用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直到服务器启动才存在。

1首先检查位置,如果你安装战争或Linux或windows基于它

例如,如果战争在Linux和admin用户

/ home / User_NAME”。詹金斯/ \用户/行政/ xml配置。

转到#jbcrypt后面的标签:

<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>

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

https://www.dailycred.com/article/bcrypt-calculator

确保以$2a开头,因为这是jenkens用的