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


回答:


275

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

<useSecurity>true</useSecurity>

次に、Jenkinsを再起動します。

sudo service jenkins restart

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

私の場合、Dockerからk8sポッド内でJenkinsを実行している場合、serviceコマンドを実行できない場合は、ポッドを削除するだけでJenkinsを再起動できます。

kubectl delete pod <jenkins-pod-name>

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


3
変更を適用するには、Jenkinsを再起動する必要がありました。
または、アーベル2014

12
sudo service jenkins restart
MonoThreaded、2014年

10
find / -name "config.xml" 端末でconfig.xmlを使用してそれを見つけることができない場合。
Laser Hawk

プロンプトが---コマンドから再起動jenking falseにユーザーのセキュリティタグを変更した後stackoverflow.com/questions/14869311/...
Anurag_BEHS

1
また、ファイルは〜/ .jenkins /フォルダーの下に配置することもできます
Andrii Abramov

181

もう1つの方法は、ユーザーの構成ファイル(/var/lib/jenkins/users/username/config.xmlなど)を手動で編集し、passwordHashの内容を更新することです

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

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

test

1
このエントリがない場合はどうなりますか?実際にどこに配置するのですか?
serup

2
<passwordHash>XMLタグは、の子です<hudson.security.HudsonPrivateSecurityRealm_-Details>。全体的なXML構造については、デフォルトのadminユーザーを参照してください。
ivandov

2
これは、インストールを安全に保つための優れたソリューションです。好奇心から、どのようにしてそのパスワードハッシュを生成しますか?
kontextify 2016

ありがとう、これはまさに私が必要としたものです!
Matt Cavanagh 2016

C:\ Users \ <USER> \。jenkins \ users \ adminにあるファイルの内容を変更すると、問題の解決に役立ちました
Sakshi Singla

45

/ var / lib / jenkinsにあるconfig.xmlと呼ばれるファイルを見つけ、修正して問題を修正しました。


1
El-Capitanを使用していますが、config.xmlが場所に見つかりませんでした
Durai Amuthan.H 2016年

@ DuraiAmuthan.H bitnamiスタックでインストールしましたか?構成ファイルは次の場所にあります/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
siegy22

@ ryanzec、Nowakers回答は同じファイルを使用しますが、説明がわかりやすいので、正しい回答として受け入れることを検討してください。
Katu

ここで、ファイルが高シエラに見つかります
prabakaran iOS

44

<passwordHash>要素users/<username>/config.xmlは、フォーマットのデータを受け入れます

salt:sha256("password{salt}")

したがって、salt barとpasswordがfoo次の場合、次のようにSHA256を生成できます。

echo -n 'foo{bar}' | sha256sum

7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349結果として得られるはずです。ハッシュを取り、それに塩を入れてください<passwordHash>

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>

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


1
これは機能していないようです。例は、#jbscryptのソルトで始まり、次に暗号化フィールド$ 2a $ 10 $を定義します。これらはどういう意味ですか?
jrwren

私の答えは私のために働いた。表示される追加のフィールドは、異なるハッシュ形式用です。Jenkinsがハッシュされたパスワードの処理に使用するライブラリは、複数の形式をサポートしています。あなたが参照しているjbcrypt形式は、saltを使用したsha256よりも安全ですが、sha256 + salt形式はコマンドラインから簡単に作成できます-演習のポイントはJenkinsに戻ることです。 JenkinsのWebインターフェースからパスワードを変更します。
uckelman 2014

これもうまくいきませんでした。bcryptの詳細情報を検索します
Laurent Picquet

それは私のために働いた。次のコマンドを使用しました: `` `PASSWORD_DIGEST =" $(echo -n "$ {ADMIN_PASSWORD} {$ {SALT}}" | sha256sum | awk '{print $ 1}') "echo"パスワードダイジェスト:$ PASSWORD_DIGEST "sed -i -e "s#<passwordHash>。* </ passwordHash>#<passwordHash> $ {SALT}:$ {PASSWORD_DIGEST} </ passwordHash>#" "/ usr / share / jenkins / ref / users / admin / config .xml "sed -i -e" s#<apiToken>。* </ apiToken>#<apiToken> $ {API_TOKEN} </ apiToken># "" / usr / share / jenkins / ref / users / admin / config。 xml "` ``
ローランピケ2017年

ミルありがとう。まったく同じ値を使用し、魅力のように機能しました。自分で戻ってパスをリセットしました。

26

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

/ var / lib / jenkins /

そので利用可能

〜/ .jenkins

その後、他の言及されたようにconfig.xmlファイルを開き、次の変更を行います

  • この中で置き換える<useSecurity>true</useSecurity><useSecurity>false</useSecurity>

  • 削除<authorizationStrategy>して<securityRealm>

  • 保存してjenkinsを再起動します(sudo service jenkins restart


実際にはconfig.xmlファイルを編集できません。vimを使用して保存しようとすると、読み取り専用ファイルであり、書き込みアクセスを許可する操作が許可されていません。
Emjey

19

修正の答えは正しかった。しかし、/var/lib/jenkins/config.xml「プロジェクトベースのマトリックス認証戦略」を有効にした場合は、このように見えることに言及する必要があると思います。/var/lib/jenkins/config.xmljenkinsを削除して再起動することも有効です。また、ユーザーを削除して、/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>

14

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

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

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

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

この回答の間に損害を受けた証券はありません。


クリーンアップセットdisableSignupをtrueに戻し、ジェンキンスを再起動します
Marc

14

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

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

ルート構成ファイルから行を削除useSecurityしてJenkinsを再起動します。authorizationStrategyconfig.xml

参照:Jenkins Webサイトでセキュリティ無効にする


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


私にとってはうまくいきましたが、現在は承認をスキップしています。
hemanto

@hemanto承認を再度有効にするには、セキュリティを有効にする必要があります。答えを更新しました。
ケノーブ2017年

12

権限の間違いのために誤って自分をJenkinsからロックアウトし、jenkinsユーザーまたはrootに切り替えるサーバー側のアクセス権がない場合... Jenkinsでジョブを作成し、これをシェルスクリプトに追加できます。

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

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


1
自分がロックアウトされた場合に備えて、Jenkinsでジョブをどのように作成しますか?
GeroldBroserがモニカを2016

この場合、通常のChromeウィンドウにログインしていて、メインウィンドウからログアウトする前に、セキュリティ設定を変更してシークレットウィンドウでテストしました。テストではログインできませんでしたが、セッションをメインウィンドウに保持したため、損傷を修復できました。
Nick

1
私が変更したセキュリティ設定の一部は、私の認証セッションにJenkinsのセキュリティ構成を変更する権限がなくなったことも意味していると思います。
Nick

をアクティブ化しProjectMatrixAuthorizationた後、この問題が発生します。変更を加えてJenkinsを再起動すると、Jenkins-UIにJavaの例外が表示されます。これを修正するために、次の行も削除しましたがauthorizationStrategy、再び大丈夫でした。Jenkinsは次の開始時に空のタグとしてそれを再読み込みしました。
Peter Schneider

12

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

/ var / lib / Jenkins / users / admin /内のconfig.xmlファイルは、/ 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'

これにより、Jenkinsハッシュの正しいプレフィックスであるプレフィックス2aが付いたハッシュが出力されます。

次に、config.xmlファイルを編集します。

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

新しいハッシュを挿入したら、Jenkinsをリセットします。

(systemdを使用しているシステムの場合):

sudo systemctl restart Jenkins

これでログインできるようになり、システムを1秒間開いたままにしませんでした。


5
\.jenkins\secrets\initialAdminPassword

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


4

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

/users/{UserName}/.jenkins内に作成されたConfig.xmlファイルをトラバースできます。

このファイル内でコードを変更できます

<useSecurity>true</useSecurity>

に、

<useSecurity>false</useSecurity>

4

1最初にwar、Linux、またはそれに基づくWindowsをインストールする場所を確認します

たとえば、Linuxでの管理ユーザー向けの戦争の場合

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

#jbcryptの後にこのタグに移動します。

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

bcryptハッシュジェネレーターに任意のWebサイトを使用してこのパスワードを変更する

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

これが$ 2aで始まることを確認してください。これは、jenkensが使用する1つです。


4

ステップ1:cd .jenkins / secretsディレクトリに移動すると、「initialAdminPassword」が取得されます。

ステップ2:nano initialAdminPassword

パスワードを取得します


2

変更<useSecurity>true</useSecurity>するために<useSecurity>false</useSecurity>は十分ではありません、あなたは削除する必要があります<authorizationStrategy>し、<securityRealm>要素すぎと実行して、ジェンキンスサーバーを再起動しますsudo service jenkins restart

これを覚えておいてください。に設定<usesecurity>するfalseと、問題が発生する可能性があります。これらの手順は、こちらの公式ドキュメントに記載されているためです。


1

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

  • rootユーザーに変更します。 sudo su -
  • パスワードをコピーします。 xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • 管理者でログインしctrl + v、パスワード入力ボックスを押します。

xclipがない場合はインストールします。

  • $ sudo apt-get install xclip

デフォルトのパスワードを使用するとうまくいきました。簡単にするために、1回限りのxclipをインストールするのではなく、単に「cat secrets / initialAdminPassword」を実行できます。
ポール

このパスワードが存在しない場合があります。この構成をバイパスする方法はわかりませんが、私にとっては存在せず、config.xmlを編集する必要がありました
vinicius.hisao

1

KUBENETESとDocker上のJenkins

以下の場合はジェンキンスによって管理されるコンテナの上にKubernetes PODので、もう少し複雑です:kubectl exec PODID --namespace=jenkins -it -- /bin/bashあなたが直接ジェンキンスを実行しているコンテナへのアクセスを許可しますが、あなたはrootアクセスを持っていないだろうsudoviと多くのコマンドが利用できないため、回避策必要です。

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

  • SSH ノードに
  • 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を再起動するだけで十分です。コンテナとポッドを停止させるアクションです。永続ボリュームのおかげで、構成が更新されて(そして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

多くの場合、config.xmlファイルを編集する権限がありません。

最も簡単なのは、 config.xml sudoコマンドを使用して、取り消して削除することです。

コマンドを使用してジェンキンスを再起動します sudo /etc/init.d/jenkins restart

これにより、Jenkinsのすべてのセキュリティが無効になり、ログインオプションが表示されなくなります


sudoでconfig.xmlを削除できる場合は、sudoでも編集できます。例:sudo vi ...
Lee Meador

1

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

セキュリティとスタートアップウィザードの両方を非常に簡単に無効にするには、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ますが、(おそらく)サーバーが起動するまでconfig.xmlが存在しないため、Dockerfileからの変更に使用できないことに注意してください。


0

同様の問題があり、ArtBからの返信に続いて、

ユーザーに適切な構成がないことがわかりました。だから私がしたこと:

注:このようなXMLファイルを手動で変更することは危険です。自己責任で行ってください。私はすでにロックアウトされていたので、失うものはほとんどありませんでした。AFAIK最悪の場合、前の投稿で述べたように、〜/ .jenkins / config.xmlファイルを削除していたでしょう。

**> 1. jenkinsマシンへのSSH

  1. cd〜/ .jenkins(インストールによっては/var/lib/jenkins/config.xmlの下に配置されていると思いますが、私の場合はそうではありません)
  2. vi config.xml、およびauthorizationStrategy xmlタグの下に、以下のセクションを追加します(「put-your-username」の代わりにユーザー名を使用しただけです)
  3. ジェンキンスを再起動します。私の場合、ルートサービスとしてtomcat7を停止します。; service tomcat7 start
  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>

0

$ JENKINS_HOME / config.xmlファイルを編集し、次のようにしてセキュリティ構成を変更します。

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

その後、Jenkinsを再起動します。


0

macOSをお使いの方は、自作で新バージョンをインストールできます。したがって、休憩するには、このコマンドラインで次のコマンドを使用する必要があります。

brew services restart jenkins-lts
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.