जवाबों:
सरल समाधान पूरी तरह से अक्षम सुरक्षा के लिए है - परिवर्तन true
करने false
में /var/lib/jenkins/config.xml
फ़ाइल।
<useSecurity>true</useSecurity>
तो बस जेनकींस, द्वारा पुनः आरंभ करें
sudo service jenkins restart
और फिर व्यवस्थापक पैनल पर जाएं और एक बार फिर से सब कुछ सेट करें।
यदि आप मामले में एक डॉकटर से k8s पॉड के अंदर अपने जेनकींस चला रहे हैं, जो मेरा मामला है और service
कमांड नहीं चला सकता है , तो आप पॉड को हटाकर जेनकींस को फिर से शुरू कर सकते हैं:
kubectl delete pod <jenkins-pod-name>
एक बार आदेश जारी होने के बाद, k8 पुरानी पॉड को समाप्त कर देगा और एक नई शुरुआत करेगा।
sudo service jenkins restart
find / -name "config.xml"
अपने टर्मिनल में config.xml का उपयोग नहीं कर सकते हैं ।
एक अन्य तरीका अपने उपयोगकर्ता के लिए कॉन्फ़िगरेशन फ़ाइल को मैन्युअल रूप से संपादित करना होगा (जैसे /var/lib/jenkins/users/username/config.xml) और पासवर्ड की सामग्री को अपडेट करें :
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
एक बार जब आप ऐसा कर लेते हैं, तो बस जेनकिंस को पुनरारंभ करें और इस पासवर्ड का उपयोग करके लॉग इन करें:
test
<passwordHash>
एक्सएमएल टैग का एक बच्चा है <hudson.security.HudsonPrivateSecurityRealm_-Details>
। कुल XML संरचना के विचार के लिए डिफ़ॉल्ट व्यवस्थापक उपयोगकर्ता को देखें।
मैंने फ़ाइल को / var / lib / jenkins में स्थित विन्यास में पाया, जिसे config.xml कहा जाता है, जो इस समस्या को ठीक करता है।
/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
<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 हैश संग्रहीत होगा।)
El-Capitan config.xml में नहीं पाया जा सकता है
/ Var / lib / जेनकींस /
में उपलब्ध है
~ / .Jenkins
उसके बाद अन्य उल्लेख के रूप में config.xml फ़ाइल खोलें और निम्नलिखित परिवर्तन करें
इसमें <useSecurity>true</useSecurity>
साथ देते हैं<useSecurity>false</useSecurity>
निकालें <authorizationStrategy>
और<securityRealm>
इसे सहेजें और जेनकींस को फिर से शुरू करें ( sudo service jenkins पुनरारंभ )
संशोधन पर उत्तर सही था। फिर भी, मुझे लगता है कि यह उल्लेख किया जाना चाहिए कि /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>
यदि आप मैट्रिक्स अनुमतियों का उपयोग कर रहे हैं, तो सुरक्षा को अक्षम किए बिना इसे रीसेट करने के लिए (संभवत: आसानी से अन्य लॉगिन तरीकों के लिए अनुकूल है):
config.xml
, के लिए सेट disableSignup
करेंfalse
।config.xml
, <permission>hudson.model.Hudson.Administer:username</permission>
लाइनों में से एक की नकल करें और बदलेंusername
नए उपयोगकर्ता के साथ ।disableSignup
वापस true
अंदर जाएंconfig.xml
।वैकल्पिक सफाई:
<permission>
लाइन हटाएं config.xml
।इस उत्तर के दौरान किसी भी प्रतिभूतियों को नुकसान नहीं पहुंचाया गया था।
लिनक्स में सरल चरणों में जेनकिंस सुरक्षा को अक्षम करने के लिए, इन कमांडों को चलाएं:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
यह आपकी रूट कॉन्फ़िग फ़ाइल से हटाएगा useSecurity
और आपके जेनकिन्स को फिर से शुरू करेगा।authorizationStrategy
config.xml
इसे भी देखें: जेनकिंस वेबसाइट पर सुरक्षा अक्षम
जेनकिंस तक पहुंच प्राप्त करने के बाद, आप एक्सेस कंट्रोल / सुरक्षा क्षेत्र का चयन करके अपने कॉन्फ़िगर ग्लोबल सुरक्षा पृष्ठ में सुरक्षा को फिर से सक्षम कर सकते हैं । के बाद व्यवस्थापक उपयोगकर्ता बनाने के लिए मत भूलना ।
आप की गलती पर आप गलती से एक अनुमति गलती के कारण खुद को जेनकिंस से बाहर कर सकते हैं, और आपके पास सर्वर-साइड का उपयोग जेनकींस उपयोगकर्ता या रूट पर स्विच करने के लिए नहीं है ... आप जेनकिंस में नौकरी कर सकते हैं और इसे शेल स्क्रिप्ट में जोड़ सकते हैं ...
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
इसके बाद बिल्ड नाउ पर क्लिक करें और अगर जरूरत हो तो जेनकिंस (या सर्वर को फिर से शुरू करें!)
ProjectMatrixAuthorization
। जब मैं परिवर्तन करता हूं और जेनकिंस को पुनः आरंभ करता हूं तो मुझे जेनकिंस-यूआई में एक जावा-अपवाद दिखाई देता है। इसे ठीक करने के लिए, मैंने रेखा को भी हटा दिया authorizationStrategy
और यह फिर से ठीक हो गया। जेनकिन्स ने अगली शुरुआत में इसे एक खाली टैग के रूप में पढ़ा।
हम सुरक्षा को छोड़ते समय पासवर्ड रीसेट कर सकते हैं।
Config.xml फ़ाइल / var / lib / Jenkins / users / admin / जैसे / etc / छाया फ़ाइल Linux या UNIX- जैसी प्रणालियों या Windows में SAM फ़ाइल, इस अर्थ में कि यह हैश को संग्रहीत करता है खाते का पासवर्ड।
यदि आपको लॉग इन किए बिना पासवर्ड रीसेट करने की आवश्यकता है, तो आप इस फ़ाइल को संपादित कर सकते हैं और पुराने हैश को एक नए एचसीएच से बदल सकते हैं:
$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'
यह आपके हैश का उत्पादन करेगा, प्रीफिक्स 2 ए के साथ, जेनकिंस हैश के लिए सही उपसर्ग।
अब, config.xml फ़ाइल को संपादित करें:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
एक बार जब आप नया हैश डालें, तो जेनकिंस रीसेट करें:
(यदि आप सिस्टमड के साथ सिस्टम पर हैं):
sudo systemctl restart Jenkins
अब आप लॉग इन कर सकते हैं, और आपने अपने सिस्टम को एक सेकंड के लिए खुला नहीं छोड़ा।
यदि आप युद्ध या लिनक्स या उसके आधार पर विंडोज़ स्थापित करते हैं तो 1 पहला स्थान जांचें
उदाहरण के लिए अगर लिनक्स के तहत युद्ध और व्यवस्थापक उपयोगकर्ता के लिए
/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 के साथ शुरू होता है क्योंकि यह एक जेनकेन उपयोग करता है
स्टेप -1: डायरेक्टरी cd .jenkins / सीक्रेट्स पर जाएं फिर आपको एक 'initialAdminPassword' मिलेगा।
चरण -2: नैनो आरंभिक AdminPassword
आपको एक पासवर्ड मिलेगा
बदलने के <useSecurity>true</useSecurity>
लिए <useSecurity>false</useSecurity>
पर्याप्त नहीं होगा, आपको हटा देना चाहिए <authorizationStrategy>
और <securityRealm>
तत्वों को भी करना चाहिए और अपने जेनकींस सर्वर को पुनः आरंभ करना चाहिएsudo service jenkins restart
।
इस सेट याद <usesecurity>
करने के लिए false
केवल, आप के लिए एक समस्या का कारण हो सकता है क्योंकि इन निर्देशों को अपने आधिकारिक दस्तावेज में उल्लेख कर रहे यहां ।
sudo su -
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
ctrl + v
पासवर्ड इनपुट बॉक्स पर दबाएं ।$ sudo apt-get install xclip
कुबनेट्स और डोकर पर जेनकींस
के मामले में जेनकींस एक कंटेनर एक द्वारा प्रबंधित से अधिक Kubernetes पॉड में थोड़ा और अधिक जटिल के बाद से है: kubectl exec PODID --namespace=jenkins -it -- /bin/bash
आप सीधे जेनकींस चल कंटेनर के लिए उपयोग करने की अनुमति देगा, लेकिन आप रूट पहुँच नहीं होगा , sudo
,vi
और कई आदेशों एक समाधान उपलब्ध नहीं हैं और इसलिए जरूरत है।
kubectl describe pod [...]
अपने पॉड और कंटेनर आईडी को चलाने वाले नोड को खोजने के लिए उपयोग करें(docker://...)
SSH
नोड मेंdocker exec -ti -u root -- /bin/bash
रूट विशेषाधिकारों के साथ कंटेनर का उपयोग करने कीapt-get update
sudo apt-get install vim
दूसरा अंतर यह है कि जेनकिंस कॉन्फ़िगरेशन फ़ाइल को एक अलग पथ में रखा गया है जो लगातार वॉल्यूम के बढ़ते बिंदु से मेल खाती है, अर्थात /var/jenkins_home
, यह स्थान भविष्य में बदल सकता है, इसे चला रहा है।df
।
फिर सुरक्षा को अक्षम करें - /var/jenkins_home/jenkins/config.xml
फ़ाइल में सही पर गलत बदलें ।
<useSecurity>false</useSecurity>
अब जेनकिंस को फिर से चालू करने के लिए पर्याप्त है, कार्रवाई जो कंटेनर और पॉड को मरने का कारण बनेगी, यह कुछ सेकंड में फिर से अपडेटेड कॉन्फ़िगरेशन (और सभी मौका जैसे vi, अपडेट मिट) के साथ लगातार वॉल्यूम के लिए धन्यवाद होगा।
संपूर्ण समाधान का परीक्षण Google कुबेरनेट इंजन पर किया गया है।
अद्यतन
सूचना कि आप ps -aux
सादा पाठ में पासवर्ड चला सकते हैं, रूट एक्सेस के बिना भी दिखाया गया है।
jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]
बहुत बार जब आप config.xml फ़ाइल को संपादित करने की अनुमति नहीं होगी।
सबसे आसान काम यह होगा कि आप config.xml
सूडो कमांड का इस्तेमाल करके वापस आ जाएं ।
कमांड का उपयोग करके जेनकिंस को पुनरारंभ करें sudo /etc/init.d/jenkins restart
यह जेनकिंस में सभी सुरक्षा को अक्षम कर देगा और लॉगिन विकल्प गायब हो जाएगा
Bcrypt का उपयोग करके आप इस समस्या को हल कर सकते हैं। जो व्यक्ति बैश और अजगर का उपयोग करके प्रक्रिया को स्वचालित करने का प्रयास कर रहा है, उसके लिए @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
अन्यथा जेनकिंस के चारों ओर घूमने वाला कोई अन्य आदेश विफल हो जाएगा।
केवल सुरक्षा और स्टार्टअप विज़ार्ड दोनों को अक्षम करने के लिए, जावा संपत्ति का उपयोग करें:
-Djenkins.install.runSetupWizard=false
इसके बारे में अच्छी बात यह है कि आप इसे डॉकर छवि में उपयोग कर सकते हैं जैसे कि आपका कंटेनर हमेशा बिना लॉगिन स्क्रीन के तुरंत चालू होगा:
# Dockerfile
FROM jenkins/jenkins:lts
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
ध्यान दें कि, जैसा कि दूसरों ने उल्लेख किया है, जेनकिंस config.xml /var/jenkins_home
छवि में है, लेकिन sed
इसे डॉकरफाइल से संशोधित करने का उपयोग करने में विफल रहता है, क्योंकि (संभवतः) config.xml तब तक मौजूद नहीं है जब तक कि सर्वर शुरू नहीं होता है।
मेरे पास एक समान मुद्दा था, और आर्टबी से उत्तर मिला,
मैंने पाया कि मेरे उपयोगकर्ता के पास उचित कॉन्फ़िगरेशन नहीं थे। तो मैंने क्या किया:
नोट: ऐसी XML फ़ाइलों को मैन्युअल रूप से संशोधित करना जोखिम भरा है। अपने जोखिम पर करें। चूंकि मैं पहले से ही बंद था, इसलिए मेरे पास खोने के लिए बहुत कुछ नहीं था। AFAIK सबसे खराब स्थिति मैं प्रचलित पोस्ट के रूप में ~ / .jenkins / config.xml फ़ाइल को हटा दिया होगा।
**> 1. जेनकींस मशीन के लिए ssh
- cd ~ / .jenkins (मुझे लगता है कि कुछ संस्थापन इसे /var/lib/jenkins/config.xml के तहत डालते हैं, लेकिन मेरे मामले में नहीं)
- vi config.xml, और ऑथराइजेशनस्ट्रेटी xml टैग के तहत, नीचे सेक्शन जोड़ें ("पुट-योर-यूजर नेम" के बजाय मेरे यूजरनेम का उपयोग करें)
- जेनकींस को पुनः आरंभ करें। मेरे मामले में रूट सेवा tomcat7 स्टॉप के रूप में; ; सेवा tomcat7 प्रारंभ
- फिर से लॉगिन करने का प्रयास करें। (मेरे लिए काम किया) **
के अंतर्गत
जोड़ें:
<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>
अब, आप विभिन्न दिशाओं में जा सकते हैं। उदाहरण के लिए मेरे पास गीथ ऑउथ इंटीग्रेशन था, इसलिए मैं नीचे दिए गए कुछ के साथ ऑथराइजेशनस्ट्रेगी को बदलने की कोशिश कर सकता था:
नोट:, यह मेरे मामले में काम करता है क्योंकि मेरे पास एक विशिष्ट गितुब ऑउथ प्लगइन था जो पहले से ही कॉन्फ़िगर किया गया था। तो यह पिछले समाधान की तुलना में अधिक जोखिम भरा है।
<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>
$ JENKINS_HOME / config.xml फ़ाइल को संपादित करें और इसके साथ डी सुरक्षा कॉन्फ़िगरेशन बदलें:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
इसके बाद जेनकिंस को फिर से शुरू करें।
एक जो macOS का उपयोग कर रहा है, उसके लिए नया संस्करण सिर्फ होमब्रे द्वारा स्थापित किया जा सकता है। इसलिए आराम करने के लिए, इस कमांड लाइन का उपयोग करना चाहिए:
brew services restart jenkins-lts