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


当前回答

要在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用户。

其他回答

如果你使用矩阵权限(可能很容易适应其他登录方法),在不禁用安全性的情况下重置它:

在config.xml中,将disableSignup设置为false。 重启詹金斯。 去詹金斯的网页,注册一个新用户。 在config.xml中,复制<permission>hudson.model.Hudson. xml中的一个。管理:username</permission>行,用新用户替换username。 如果它是私有服务器,在config.xml中将disableSignup设置为true。 重启詹金斯。 进入Jenkins网页,以新用户身份登录。 重置原用户密码。 以原用户登录。

可选的清理:

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

在此回答过程中,没有任何证券受到损害。

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

要非常简单地禁用安全性和启动向导,请使用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:进入目录cd .jenkins/secrets,然后你会得到一个'initialAdminPassword'。

step-2: nano initialAdminPassword

你会得到一个密码

詹金斯对库贝努特斯和多克

kubectl exec PODID——namespace= Jenkins -it——/bin/bash将允许您直接访问运行Jenkins的容器,但您将没有根访问权限,sudo, vi和许多命令不可用,因此需要一个解决方案。

用kubectl描述pod[…]找到运行Pod的节点和容器ID (docker://…)

SSH进入节点 使用docker exec -ti -u root——/bin/bash以root权限访问容器 apt-get更新 Sudo apt-get安装vim

第二个区别是Jenkins配置文件被放置在与持久卷挂载点对应的不同路径中,即/var/jenkins_home,这个位置可能在将来会改变,运行df检查它。

然后禁用安全性-在/var/jenkins_home/jenkins/config.xml文件中将true改为false。

<useSecurity>false</useSecurity>

现在重新启动Jenkins就足够了,这个操作将导致容器和Pod死亡,它将在几秒钟内重新创建,并更新配置(并且由于持久卷,所有的机会都像vi,更新被擦除)。

整个解决方案已经在谷歌Kubernetes Engine上进行了测试。 更新 请注意,您也可以运行ps -aux,即使没有root访问权限,密码也会以纯文本显示。

jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]