是否有一种方法来重置所有(或只是禁用安全设置)从命令行没有用户/密码,因为我已经设法完全锁定自己的詹金斯?
当前回答
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用的
其他回答
将< usesecsecurity >true</ usesecsecurity >更改为< usesecsecurity >false</ usesecsecurity >是不够的,你应该删除<authorizationStrategy>和<securityRealm>元素,并通过执行sudo service jenkins restart重启jenkins服务器。
请记住,仅将< usesecsecurity >设置为false可能会给您带来问题,因为这些说明在这里的官方文档中提到了。
简单的方法是使用admin psw登录您的admin用户:
修改为root用户:sudo su - 复制密码:xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword 以admin登录,在密码输入框上按ctrl + v。
安装xclip如果你没有它:
安装xclip
我会在解决方案的基础上增加一些改进:
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
希望这对任何人都有帮助。
编辑$JENKINS_HOME/config.xml文件,修改去安全配置如下:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
之后詹金斯重启。
我也遇到了类似的问题,在收到ArtB的回复后,
我发现我的用户没有正确的配置。所以我做的是:
注意:手动修改此类XML文件存在风险。做这件事的风险自负。既然我已经被锁在门外了,我也没什么可失去的了。最坏的情况下,我会删除~/.jenkins/config.xml文件,就像前面的帖子提到的那样。
* * > 1。SSH到Jenkins机器
cd ~ /。jenkins(我猜有些安装把它放在/var/lib/jenkins/config.xml下,但在我的情况下没有) vi config.xml,在authorizationStrategy xml标签下,添加以下部分(只是使用我的用户名而不是“put your-username”) 重启詹金斯。在我的情况下,根服务tomcat7停止;; 服务tomcat7启动 请重新登录。(为我工作)**
下
add:
<permission>hudson.model.Computer.Build:put-your-username</permission>
<permission>hudson.model.Computer.Configure:put-your-username</permission>
<permission>hudson.model.Computer.Connect:put-your-username</permission>
<permission>hudson.model.Computer.Create:put-your-username</permission>
<permission>hudson.model.Computer.Delete:put-your-username</permission>
<permission>hudson.model.Computer.Disconnect:put-your-username</permission>
<permission>hudson.model.Hudson.Administer:put-your-username</permission>
<permission>hudson.model.Hudson.ConfigureUpdateCenter:put-your-username</permission>
<permission>hudson.model.Hudson.Read:put-your-username</permission>
<permission>hudson.model.Hudson.RunScripts:put-your-username</permission>
<permission>hudson.model.Hudson.UploadPlugins:put-your-username</permission>
<permission>hudson.model.Item.Build:put-your-username</permission>
<permission>hudson.model.Item.Cancel:put-your-username</permission>
<permission>hudson.model.Item.Configure:put-your-username</permission>
<permission>hudson.model.Item.Create:put-your-username</permission>
<permission>hudson.model.Item.Delete:put-your-username</permission>
<permission>hudson.model.Item.Discover:put-your-username</permission>
<permission>hudson.model.Item.Read:put-your-username</permission>
<permission>hudson.model.Item.Workspace:put-your-username</permission>
<permission>hudson.model.Run.Delete:put-your-username</permission>
<permission>hudson.model.Run.Update:put-your-username</permission>
<permission>hudson.model.View.Configure:put-your-username</permission>
<permission>hudson.model.View.Create:put-your-username</permission>
<permission>hudson.model.View.Delete:put-your-username</permission>
<permission>hudson.model.View.Read:put-your-username</permission>
<permission>hudson.scm.SCM.Tag:put-your-username</permission>
现在,你可以去不同的方向。例如,我有github oauth集成,所以我可以尝试替换授权策略如下:
注意:,它在我的情况下工作,因为我有一个特定的github oauth插件,已经配置。所以它比之前的解决方案风险更大。
<authorizationStrategy class="org.jenkinsci.plugins.GithubAuthorizationStrategy" plugin="github-oauth@0.14">
<rootACL>
<organizationNameList class="linked-list">
<string></string>
</organizationNameList>
<adminUserNameList class="linked-list">
<string>put-your-username</string>
<string>username2</string>
<string>username3</string>
<string>username_4_etc_put_username_that_will_become_administrator</string>
</adminUserNameList>
<authenticatedUserReadPermission>true</authenticatedUserReadPermission>
<allowGithubWebHookPermission>false</allowGithubWebHookPermission>
<allowCcTrayPermission>false</allowCcTrayPermission>
<allowAnonymousReadPermission>false</allowAnonymousReadPermission>
</rootACL>
</authorizationStrategy>
推荐文章
- 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游戏高分表的最佳方法是什么
- 如何循环通过文件匹配通配符在批处理文件