是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?
当前回答
詹金斯对库贝努特斯和多克
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
[...]
其他回答
编辑$JENKINS_HOME/config.xml文件,修改去安全配置如下:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
之后詹金斯重启。
简单的方法是使用admin psw登录您的admin用户:
修改为root用户:sudo su - 复制密码:xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword 以admin登录,在密码输入框上按ctrl + v。
安装xclip如果你没有它:
安装xclip
我们可以在打开安全系统的情况下重置密码。
/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
现在您可以登录了,而且您的系统一秒钟都没有打开。
要在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用户。
users/<username>/config.xml中的<passwordHash>元素将接受该格式的数据
salt:sha256("password{salt}")
所以,如果你的salt是bar,你的密码是foo,那么你可以像这样生成SHA256:
echo -n 'foo{bar}' | sha256sum
结果应该是7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349。将哈希值和盐一起放入<passwordHash>:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
重新启动Jenkins,然后尝试使用密码foo登录。然后将密码重置为其他密码。(Jenkins默认使用bcrypt,一轮SHA256并不是存储密码的安全方式。当你重置密码时,你会得到一个bcrypt哈希存储。)
推荐文章
- Linux Bash中双&和分号有什么区别?
- 如何合并2 JSON对象从2个文件使用jq?
- 在SSH会话中查找客户端的IP地址
- C++ Linux的想法?
- 如何为Fedora安装g++ ?
- Hudson支持的JUnit XML格式规范是什么?
- 如何触发命令行PHP脚本的XDebug分析器?
- Linux删除大小为0的文件
- Maven命令行如何指向特定的settings.xml为单个命令?
- Spring引导应用程序作为服务
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- Linux: kill后台任务
- 阻止人们入侵基于php的Flash游戏高分表的最佳方法是什么
- 如何循环通过文件匹配通配符在批处理文件