是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?
当前回答
要非常简单地禁用安全性和启动向导,请使用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直到服务器启动才存在。
其他回答
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哈希存储。)
詹金斯对库贝努特斯和多克
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\secrets\initialAdminPassword
从initialAdminPassword文件复制密码,并将其粘贴到Jenkins中。
对于使用macOS的用户来说,新版本只能通过自制软件安装。所以为了休息,这个命令行必须使用:
brew services restart jenkins-lts
在El-Capitan中,config.xml不能在
/var/lib/jenkins/
它可在
~ / .jenkins
然后,如前所述,打开config.xml文件并进行以下更改
将< usesecsecurity >true</ usesecsecurity >替换为< usesecsecurity >false</ usesecsecurity > 删除<authorizationStrategy>和<securityRealm> 保存它并重新启动jenkins(sudo service jenkins restart)
推荐文章
- 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游戏高分表的最佳方法是什么
- 如何循环通过文件匹配通配符在批处理文件