web-dev-qa-db-ja.com

コマンドラインからJenkinsセキュリティ設定をリセットする方法

Jenkinsname__から自分自身を完全にロックアウトできたので、ユーザー/パスワードなしでコマンドラインからすべてをリセットする(または単にセキュリティ設定を無効にする)方法はありますか?

200
ryanzec

最も簡単な解決策はセキュリティを完全に無効にすることです - /var/lib/jenkins/config.xmlファイルのtruefalseに変更してください。

<useSecurity>true</useSecurity>

それから、Jenkinsを再起動してください。

Sudo service jenkins restart

そして管理者パネルに行き、もう一度すべてを設定します。

私の場合ではありますがserviceコマンドを実行できない場合は、Dockerからk8s pod内でJenkinsを実行している場合は、そのPodを削除してJenkinsを再起動できます。

kubectl delete pod <jenkins-pod-name>

コマンドが発行されると、k8sは古いポッドを終了して新しいポッドを開始します。

251
Nowaker

もう1つの方法は、あなたのユーザ用の設定ファイル(例えば/var/lib/jenkins/users/username/config.xml)を手動で編集し、passwordHashの内容を更新することです。

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

これが完了したら、Jenkinsを再起動し、このパスワードを使用してログインします。

test
158
Arseny

/ var/lib/jenkinsにconfig.xmlという名前の問題のファイルが見つかりました。これを修正して問題を修正しました。

44
ryanzec

<passwordHash>users/<username>/config.xml要素は、以下の形式のデータを受け入れます。

salt:sha256("password{salt}")

つまり、あなたのsaltがbarであなたのパスワードがfooであれば、このようにSHA256を作成することができます。

echo -n 'foo{bar}' | sha256sum

結果として7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349を取得するはずです。ハッシュを取り、それをsaltと共に<passwordHash>に入れます。

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>

Jenkinsを再起動してから、パスワードfooでログインしてみます。それからパスワードを他のものに再設定してください。 (Jenkinsはデフォルトでbcryptを使用しており、SHA256の1ラウンドはパスワードを保存する安全な方法ではありません。パスワードをリセットすると、bcryptハッシュが保存されます。)

38
uckelman

El-Capitanではconfig.xmlは見つかりません。

/ var/lib/jenkins /

で利用可能

〜/ .jenkins

その後、他の方法で述べたようにconfig.xmlファイルを開き、次のように変更します。

  • この場合、<useSecurity>true</useSecurity><useSecurity>false</useSecurity>に置き換えます。

  • <authorizationStrategy><securityRealm>を削除

  • 保存してjenkinsを再起動します(Sudo service jenkinsの再起動

21
Durai Amuthan.H

修正の答えは正しかった。それでも、 "Project-based Matrix Authorization Strategy"を有効にしている場合、/var/lib/jenkins/config.xmlはこのように見えることに言及する必要があります。 /var/lib/jenkins/config.xmlを削除してjenkinsを再起動してもうまくいきます。また、最初から始めるために/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>
18
user637338

セキュリティを無効にせずに をリセットするには マトリックスのアクセス権を使用している場合は(おそらく他のログイン方法にも簡単に適応できます):

  1. config.xmlでは、disableSignupfalseに設定します。
  2. 再起動 Jenkins。
  3. JenkinsのWebページにアクセスし、 新しいユーザーで登録します
  4. config.xmlで、<permission>hudson.model.Hudson.Administer:username</permission>行の1つを複製し、usernameを新しいユーザーに置き換えます。
  5. プライベートサーバーの場合は、config.xmldisableSignuptrueに戻します。
  6. 再起動 Jenkins。
  7. JenkinsのWebページに移動し、 新しいユーザーとしてログインします
  8. 元のユーザーのパスワードをリセットします
  9. 元のユーザーとして でログインします。

オプションのクリーンアップ:

  1. 新しいユーザーを削除します。
  2. <permission>の一時的なconfig.xml行を削除します。

この回答中に有価証券は害されなかった。

14
l0b0

Linuxで簡単な手順でJenkinsセキュリティを無効にするには、次のコマンドを実行します。

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

config.xmlルート設定ファイルからuseSecurity行とauthorizationStrategy行が削除され、Jenkinsが再起動します。

Jenkins Webサイトで セキュリティを無効にする も参照してください。


Jenkinsにアクセスした後、 アクセス制御/セキュリティレルム を選択して、グローバルセキュリティの設定ページでセキュリティを再度有効にすることができます。その後、 管理ユーザー を作成することを忘れないでください。

14
kenorb

その後、権限の間違いで誤ってJenkinsをロックアウトしてしまい、jenkinsユーザやrootに切り替えるためのサーバサイドアクセスができなくなります。

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

次に[今すぐビルド]をクリックしてJenkins(または必要に応じてサーバー)を再起動します。

12
Nick

セキュリティをオンにしたままパスワードをリセットできます。

/ var/lib/Jenkins/users/admin /にあるconfig.xmlファイルは、Linuxの/ etc/shadowファイルやUNIXのようなシステム、あるいは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

これでログインでき、システムをしばらく開いたままにしていませんでした。

9
Reem
\.jenkins\secrets\initialAdminPassword

InitialAdminPasswordファイルからパスワードをコピーして、それをJenkinsに貼り付けます。

5
Shivam

ステップ1:ディレクトリcd .jenkins/secretsに行きます、そして、あなたは「initialAdminPassword」を得るでしょう。

step-2:ナノイニシャルアドミンパスワード

あなたはパスワードを取得します

4
Shaik Zeeshan

Windows OSでjenkinsのデフォルトセキュリティを削除するには、

/users/{UserName}/.jenkins内に作成されたConfig.xmlファイルをたどることができます。

このファイルの中であなたはからコードを変更することができます

<useSecurity>true</useSecurity>

に、

<useSecurity>false</useSecurity>
4
Krutik

あなたが戦争かLinuxかそれに基づいて窓をインストールするなら1最初の場所をチェック

例えば、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で始まっていることを確認してください。

3
Ismail

<useSecurity>true</useSecurity><useSecurity>false</useSecurity>に変更するだけでは不十分です。<authorizationStrategy>および<securityRealm>要素も削除し、Sudo service jenkins restartを実行してjenkinsサーバを再起動する必要があります。

このことを覚えておいてください、<usesecurity>falseに設定するだけであなたのために問題を引き起こすかもしれません、なぜならこれらの指示はここの公式文書 で述べられているからです

2

KUBENETESとDockerをめぐるJenkins

Jenkinsの場合、Kubernetes PODによって管理されるコンテナは、 kubectl exec PODID --namespace=jenkins -it -- /bin/bashはJenkinsを実行しているコンテナへの直接アクセスを許可しますが、あなたはrootアクセスを許可されないでしょうSudoviそして多くのコマンド利用できないため、回避策が必要です。

あなたのPodを実行しているノードとコンテナIDを見つけるためにkubectl describe pod [...]を使います(docker://...)

  • ノードへのSSH
  • root権限でコンテナにアクセスするにはdocker exec -ti -u root -- /bin/bashを実行します。
  • apt-get update
  • Sudo apt-get install vim

2番目の違いは、Jenkins設定ファイルが永続ボリュームのマウントポイントに対応する別のパス、つまり/var/jenkins_homeに配置されることです。将来変更する場合は、dfを実行して確認してください。

次にセキュリティを無効にします - /var/jenkins_home/jenkins/config.xmlファイルでtrueをfalseに変更します。

<useSecurity>false</useSecurity>

Jenkinsを再起動するだけで十分です。永続的なボリュームのおかげで、コンテナーとPodが死ぬ原因となるアクションが更新され、構成が更新されます(そしてviや更新が消去されます)。

ソリューション全体がGoogle Kubernetes Engineでテストされています。 UPDATEps -auxを実行することもできます。プレーンテキストのパスワードはrootアクセスがなくても表示されます。

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

Bcryptを使用すると、この問題を解決できます。 bashとpythonを使ってプロセスを自動化しようとしている人のために@Reem回答を拡張する。

#!/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を追加するようにしてください。そうしないと、Jenkinsを中心とする他のコマンドはすべて失敗します。

1
Ismail

これを簡単に回避するには、admin pswを使用してadminユーザーとログインします。

  • Rootユーザーに変更します。Sudo su -
  • パスワードをコピーします。xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • Adminでログインし、パスワード入力ボックスでctrl + vを押してください。

あなたがそれを持っていない場合はxclipをインストールしてください。

  • $ Sudo apt-get install xclip
1
Thomas Modeneis

多くの場合、config.xmlファイルを編集する権限がないのです。

最も簡単な方法は、config.xmlを削除してSudoコマンドを使用して削除することです。

コマンドSudo /etc/init.d/jenkins restartを使用してjenkinsを再起動してください。

これでJenkinsのすべてのセキュリティが無効になり、ログインオプションが消えます。

1
Emjey

ファイル$ JENKINS_HOME/config.xmlを編集し、これでセキュリティ設定を変更します。

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

その後、Jenkinsを再起動してください。

0
richarbernal

私は同様の問題を抱えていて、ArtBからの返事を受けて

私は自分のユーザーが適切な設定をしていないことを発見しました。だから私は何をしました:

注:このようなXMLファイルを手動で変更するのは危険です。ご自身の責任で行ってください。すでに締め出されていたので、失うことはあまりありませんでした。私の知る限り最悪の場合、前の記事で述べたように〜/ .jenkins/config.xmlファイルを削除したでしょう

**> 1.ジェンキンスマシンへのssh

  1. cd〜/ .jenkins(インストールによっては/var/lib/jenkins/config.xmlの下に置かれることがありますが、私の場合はそうではありません)
  2. vi config.xml、およびauthorizationStrategy xmlタグの下に、以下のセクションを追加します(単に「put-your-username」の代わりに自分のユーザー名を使用します)。
  3. jenkinsを再起動してください。私の場合はルートサービスとして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認証統合を持っていたので、下記のようにauthorizationStrategyを置き換えようとすることができました:

注:、私の場合はうまく動作しました。特定のgithub認証プラグインが既に設定されているからです。それで、それは前の解決策より危険です

  <authorizationStrategy class="org.jenkinsci.plugins.GithubAuthorizationStrategy" plugin="[email protected]">
    <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>
0
drordk

セキュリティと起動ウィザードの両方を非常に単純に無効にするには、Javaプロパティを使用します。

-Djenkins.install.runSetupWizard=false

これについてのいいところは、あなたのコンテナが常にログイン画面なしですぐに起動するようにDockerイメージでそれを使うことができるということです。

# Dockerfile
FROM jenkins/jenkins:lts
ENV Java_OPTS -Djenkins.install.runSetupWizard=false

他の人が言ったように、Jenkins config.xmlはイメージの/var/jenkins_homeにありますが、Dockerfileからそれを変更するためにsedを使用すると失敗することに注意してください。(おそらく)config.xmlはサーバーが起動するまで存在しないためです。

0
Rhubarb