如何在命令行重置詹金斯安全设置?如何在命令行重置詹金斯安全设置?(How to reset Jenk

2019-05-12 19:44发布

有没有一种方法,可以将所有(或只是禁用安全设置)命令行无需用户名/密码,因为我已经设法自己完全锁定的Jenkins

Answer 1:

最简单的解决方案是完全禁用安全-改变truefalse/var/lib/jenkins/config.xml文件。

<useSecurity>true</useSecurity>

然后,只需重新启动詹金斯,由

sudo service jenkins restart

然后去管理面板和设置应有尽有一次。

如果你的情况下,正在从一个码头工人,这是我的情况下,不能运行詹金斯内K8S荚service命令,那么你可以重新启动詹金斯被删除荚:

kubectl delete pod <jenkins-pod-name>

一旦命令发出,该K8S将终止旧吊舱,并开始一个新的。



Answer 2:

另一种方式是手动编辑您的用户配置文件(如/var/lib/jenkins/users/username/config.xml)和更新passwordHash的内容:

<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>

一旦你做到了这一点,只需重新启动詹金斯并登录使用此密码:

test


Answer 3:

我发现在位于/ var / lib中/詹金斯称为config.xml文件,修改固定的问题,问题的文件。



Answer 4:

所述<passwordHash>在元件users/<username>/config.xml将接受的格式数据

salt:sha256("password{salt}")

所以,如果您的盐是bar ,你的密码是foo然后你就可以生产这样的SHA256:

echo -n 'foo{bar}' | sha256sum

你应该得到7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349作为结果。 取的散列,并把它与盐成<passwordHash>

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>

詹金斯重新启动,然后尝试用密码登录foo 。 然后你的密码重置到别的东西。 (詹金斯默认使用bcrypt,和一个圆SHA256是不存储密码的安全方式。你会得到当你重置您的密码存储在bcrypt哈希值。)



Answer 5:

El-config.xml中的Capitan不能找到

在/ var / lib中/詹金斯/

它可用

〜/ .jenkins

那么之后其他上述打开config.xml文件并进行以下更改

  • 在这种替换<useSecurity>true</useSecurity><useSecurity>false</useSecurity>

  • 除去<authorizationStrategy><securityRealm>

  • 保存并重启詹金斯( 须藤服务詹金斯重新启动



Answer 6:

关于修改的答案是正确的。 然而,我认为它应该提到的是/var/lib/jenkins/config.xml看起来是这样的,如果您已经激活“基于项目的矩阵授权策略”。 删除/var/lib/jenkins/config.xml并重新启动詹金斯也做的伎俩。 我也删除了用户/var/lib/jenkins/users从头开始。

<authorizationStrategy class="hudson.security.ProjectMatrixAuthorizationStrategy">
    <permission>hudson.model.Computer.Configure:jenkins-admin</permission>
    <permission>hudson.model.Computer.Connect:jenkins-admin</permission>
    <permission>hudson.model.Computer.Create:jenkins-admin</permission>
    <permission>hudson.model.Computer.Delete:jenkins-admin</permission>
    <permission>hudson.model.Computer.Disconnect:jenkins-admin</permission>
    <!-- if this is missing for your user and it is the only one, bad luck -->
    <permission>hudson.model.Hudson.Administer:jenkins-admin</permission>
    <permission>hudson.model.Hudson.Read:jenkins-admin</permission>
    <permission>hudson.model.Hudson.RunScripts:jenkins-admin</permission>
    <permission>hudson.model.Item.Build:jenkins-admin</permission>
    <permission>hudson.model.Item.Cancel:jenkins-admin</permission>
    <permission>hudson.model.Item.Configure:jenkins-admin</permission>
    <permission>hudson.model.Item.Create:jenkins-admin</permission>
    <permission>hudson.model.Item.Delete:jenkins-admin</permission>
    <permission>hudson.model.Item.Discover:jenkins-admin</permission>
    <permission>hudson.model.Item.Read:jenkins-admin</permission>
    <permission>hudson.model.Item.Workspace:jenkins-admin</permission>
    <permission>hudson.model.View.Configure:jenkins-admin</permission>
    <permission>hudson.model.View.Create:jenkins-admin</permission>
    <permission>hudson.model.View.Delete:jenkins-admin</permission>
    <permission>hudson.model.View.Read:jenkins-admin</permission>
  </authorizationStrategy>


Answer 7:

没有 ,如果你正在使用矩阵权限(可能很容易适应其他方式登录) 禁用安全复位:

  1. config.xml ,设置disableSignupfalse
  2. 重新启动詹金斯。
  3. 前往詹金斯网页,并用新用户注册
  4. config.xml ,复制的一个<permission>hudson.model.Hudson.Administer:username</permission>线和替换username与所述新用户。
  5. 如果它是一个专用服务器,设置disableSignuptrueconfig.xml
  6. 重新启动詹金斯。
  7. 前往詹金斯网页和登录的新用户
  8. 重置原始用户的密码
  9. 登录为原始用户。

可选清理:

  1. 删除新的用户。
  2. 删除临时<permission>在线路config.xml

无证券这样的回答中受到伤害。



Answer 8:

要禁用在Linux的简单步骤詹金斯安全,运行以下命令:

sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart

它会删除useSecurityauthorizationStrategy从线config.xml根配置文件,然后重新启动您的詹金斯。

另请参阅: 禁用安全的詹金斯网站


获得访问詹金斯后,您可以通过选择重新启用在配置全球安全网页的安全访问控制/安全领域 。 超过后不要忘了创建管理员用户 。



Answer 9:

在offchance你不小心将自己锁定詹金斯由于权限错误,你没有服务器端访问切换到詹金斯用户或根......你可以在詹金斯一份工作,这增加了Shell脚本:

sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml

然后单击立即生成并重新启动詹金斯(或服务器,如果你需要!)



Answer 10:

而在离开安全我们可以重置密码。

在/ var config.xml文件/ lib中/詹金斯/用户/管理员/动作有点像/ etc / shadow文件Linux或UNIX类系统或Windows中的SAM文件,在这个意义上,它存储的散列帐户的密码。

如果你需要,而无需登录在重置密码,您可以编辑这个文件,并与来自bcrypt生成一个新的替换旧的哈希:

$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'

这将输出你的哈希,前缀2A,詹金斯正确的前缀哈希值。

现在,编辑config.xml文件:

...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...

一旦插入新的哈希值,重置詹金斯:

(如果你是用systemd的系统上):

sudo systemctl restart Jenkins

现在,您可以登录,你没有离开你的系统开了第二。



Answer 11:

\.jenkins\secrets\initialAdminPassword

从initialAdminPassword文件复制密码并将其粘贴到詹金斯。



Answer 12:

为了在默认情况下的安全性在Windows操作系统詹金斯删除,

您可以通过内部/users/{UserName}/.jenkins创建config.xml文件遍历。

在这个文件中,您可以更改从代码

<useSecurity>true</useSecurity>

至,

<useSecurity>false</useSecurity>


Answer 13:

步骤1:进入目录CD .jenkins /秘密,那么你会得到一个“initialAdminPassword”。

第2步:纳米initialAdminPassword

你将得到一个密码



Answer 14:

1点首先检查的位置,如果根据您安装战争或Linux或Windows

例如,如果战争在Linux和管理用户

/home/"User_NAME"/.jenkins/users/admin/config.xml

去#jbcrypt后这个标签:

<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>

更改使用使用bcrypt哈希生成任何网站这个密码

https://www.dailycred.com/article/bcrypt-calculator

请确保它以$开头2a中造成这一个jenkens用途



Answer 15:

改变<useSecurity>true</useSecurity><useSecurity>false</useSecurity>是不够的,你应该删除<authorizationStrategy><securityRealm>元素也并做重新启动服务器詹金斯sudo service jenkins restart

记住这一点,设置<usesecurity>false只可能会导致你的问题,因为这些指令thier官方文件中提到这里 。



Answer 16:

讨巧的,这是使用管理PSW与您的管理员用户登录:

  • 切换到root用户: sudo su -
  • 复制的密码: xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • 与管理和新闻登录ctrl + v在密码输入框。

安装XCLIP如果你没有它:

  • $ sudo apt-get install xclip


Answer 17:

詹金斯在KUBENETES和泊坞窗

詹金斯的情况下,在由Kubernetes POD管理的容器是一个有点复杂,因为: kubectl exec PODID --namespace=jenkins -it -- /bin/bash将您允许直接访问到运行詹金斯容器,但你会没有根访问sudovi和许多命令不可用,并且因此,需要一种解决方法。

使用kubectl describe pod [...]找到节点运行的吊舱和容器ID (docker://...)

  • SSH到节点
  • 运行docker exec -ti -u root -- /bin/bash访问具有root权限的容器
  • apt-get update
  • sudo apt-get install vim

第二个区别是,詹金斯配置文件被放置在对应于所述持久体积的安装点不同的路径,即, /var/jenkins_home ,此位置可能会在未来可能改变,检查它运行df

然后,禁用安全性-在更改时真亦假/var/jenkins_home/jenkins/config.xml文件。

<useSecurity>false</useSecurity>

现在,它足以重新启动詹金斯,这将导致容器和波德死行动,就会在几秒钟之更新配置再次创建(和所有像六的机会,更新擦除)由于持续的体积。

整个解决方案已经在谷歌Kubernetes引擎进行了测试。 更新通知,您可以和运行ps -aux显示明文密码,即使没有root权限。

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


Answer 18:

很多时候,你不会是具有权限编辑config.xml文件。

最简单的事情是采取的背面config.xml ,并使用sudo命令删除。

使用命令重新启动詹金斯sudo /etc/init.d/jenkins restart

这将在詹金斯禁用所有的安全性和登录选项将消失



Answer 19:

使用bcrypt就可以解决这个问题。 扩展@Reem答案的人谁试图自动使用bash和python的过程。

#!/bin/bash

pip install bcrypt
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install xmlstarlet

cat > /tmp/jenkinsHash.py <<EOF
import bcrypt
import sys

if not sys.argv[1]:
  sys.exit(10)

plaintext_pwd=sys.argv[1]
encrypted_pwd=bcrypt.hashpw(sys.argv[1], bcrypt.gensalt(rounds=10, prefix=b"2a"))
isCorrect=bcrypt.checkpw(plaintext_pwd, encrypted_pwd)

if not isCorrect:
   sys.exit(20);

print "{}".format(encrypted_pwd)
EOF

chmod +x /tmp/jenkinsHash.py
cd /var/lib/jenkins/users/admin*
pwd
while (( 1 )); do
    echo "Waiting for Jenkins to generate admin user's config file ..."

    if [[ -f "./config.xml" ]]; then
        break
    fi

    sleep 10
done

echo "Admin config file created"

admin_password=$(python /tmp/jenkinsHash.py password 2>&1)

# Repalcing the new passowrd
xmlstarlet -q ed --inplace -u "/user/properties/hudson.security.HudsonPrivateSecurityRealm_-Details/passwordHash" -v '#jbcrypt:'"$admin_password" config.xml

# Restart
systemctl restart jenkins
sleep 10

我一直在这里的密码硬编码的,但它可以根据要求的用户输入。 同时一定要补充的是sleep ,否则任何其他命令詹金斯左右旋转将会失败。



Answer 20:

我有一个类似的问题,及继起的ARTB回复,

我发现,我的用户没有适当的配置。 所以我做了什么:

注:手动修改这样的XML文件是有风险的。 做到这一点需要您自担风险。 既然我已经锁定了,我没有多大的损失。 据我所知最坏的情况,我会删除提到的〜/ .jenkins / config.xml文件作为上一个帖子。

**> 1. ssh来詹金斯机

  1. CD〜/ .jenkins(我想这一些设施把它放在/var/lib/jenkins/config.xml,但不是在我的情况)
  2. 六config.xml文件,并在authorizationStrategy XML标记,添加以下部分(只是用来代替我的用户名“放 - 你 - 用户名”)
  3. 重启詹金斯。 在我的情况下,根服务tomcat7停止; ; 服务tomcat7启动
  4. 再次尝试登录。 (为我工作)**

加:

<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的集成,这样我就可以尝试用类似下面更换authorizationStrategy:

注:,它的工作在我的情况,因为我有一个已经配置了特定的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>


Answer 21:

编辑文件$ JENKINS_HOME / config.xml和变化德安全配置与此:

<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>

即重启后詹金斯。



文章来源: How to reset Jenkins security settings from the command line?