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


当前回答

最简单的解决方案是完全禁用安全性-将/var/lib/jenkins/config.xml文件中的true更改为false。

<useSecurity>true</useSecurity>

实现相同功能的一行代码:

sed -i 's/<useSecurity>true<\/useSecurity>/<useSecurity>false<\/useSecurity>/g' /var/lib/jenkins/config.xml

然后重启Jenkins:

sudo service jenkins restart

然后转到管理面板,再次设置所有内容。

如果你在Kubernetes pod中运行Jenkins并且不能运行service命令,那么你可以通过删除pod重新启动Jenkins:

kubectl delete pod <jenkins-pod-name>

一旦命令发出,Kubernetes将终止旧的吊舱并启动一个新的吊舱。

其他回答

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

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
[...]

简单的方法是使用admin psw登录您的admin用户:

修改为root用户:sudo su - 复制密码:xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword 以admin登录,在密码输入框上按ctrl + v。

安装xclip如果你没有它:

安装xclip

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

很多时候你没有权限编辑config.xml文件。

最简单的方法是返回config.xml,然后使用sudo命令删除。

使用命令sudo /etc/init.重启jenkinsd / jenkins重启

这将禁用Jenkins中的所有安全性,登录选项将消失

我们可以在打开安全系统的情况下重置密码。

/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

现在您可以登录了,而且您的系统一秒钟都没有打开。