วิธีรีเซ็ตการตั้งค่าความปลอดภัยของเจนกินส์จากบรรทัดคำสั่ง


217

มีวิธีการรีเซ็ตทั้งหมด (หรือเพียงแค่ปิดการใช้งานการตั้งค่าความปลอดภัย) จากบรรทัดคำสั่งโดยไม่มีผู้ใช้ / รหัสผ่านที่ฉันจัดการเพื่อล็อคตัวเองออกจากJenkins?

คำตอบ:


275

ทางออกที่ง่ายที่สุดคือปิดการใช้งานความปลอดภัยอย่างสมบูรณ์ - เปลี่ยนtrueเป็นfalseใน/var/lib/jenkins/config.xmlไฟล์

<useSecurity>true</useSecurity>

จากนั้นเพียงแค่รีสตาร์ทเจนกินส์โดย

sudo service jenkins restart

จากนั้นไปที่แผง admin และตั้งค่าทุกอย่างอีกครั้ง

หากคุณในกรณีที่กำลังเรียกใช้เจนกินส์ของคุณในฝัก k8s จากนักเทียบท่าซึ่งเป็นกรณีของฉันและไม่สามารถเรียกใช้serviceคำสั่งจากนั้นคุณสามารถรีสตาร์ทเจนกินส์โดยการลบพ็อด:

kubectl delete pod <jenkins-pod-name>

เมื่อคำสั่งถูกใช้แล้ว k8s จะยุติพ็อดเก่าและเริ่มต้นใหม่


3
ฉันต้องรีสตาร์ทเจนกินส์เพื่อให้การเปลี่ยนแปลงมีผล
หรือ Arbel

12
sudo service jenkins restart
MonoThreaded

10
สำหรับผู้ที่ไม่สามารถใช้ config.xml find / -name "config.xml" ในเทอร์มินัลของคุณ
Laser Hawk

หลังจากเปลี่ยนแท็กความปลอดภัยของผู้ใช้เป็นเท็จสำหรับการเริ่มต้นใหม่ jenking จากพรอมต์คำสั่ง --- stackoverflow.com/questions/14869311/ …
Anurag_BEHS

1
ไฟล์อาจอยู่ภายใต้ ~ / .jenkins / folder
Andrii Abramov

181

อีกวิธีหนึ่งในการแก้ไขไฟล์กำหนดค่าสำหรับผู้ใช้ของคุณ (เช่น /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 ทั้งหมด
ivandov

2
นี่เป็นทางออกที่ดีที่ช่วยให้การติดตั้งปลอดภัย จากความอยากรู้เราจะสร้างรหัสผ่านแฮชได้อย่างไร
kontextify

ขอบคุณนี่คือสิ่งที่ฉันต้องการ!
Matt Cavanagh

การแก้ไขเนื้อหาของไฟล์ที่มีอยู่ใน C: \ Users \ <USER> \ .jenkins \ users \ admin ช่วยแก้ไขปัญหานี้
Sakshi Singla

45

ฉันพบไฟล์ที่มีปัญหาซึ่งอยู่ใน / var / lib / jenkins ชื่อ config.xml, การแก้ไขที่แก้ไขปัญหา


1
ฉันกำลังใช้ El-Capitan และ config.xml ไม่พบในสถานที่
Durai Amuthan.H

@ DuraiAmuthan.H คุณติดตั้งด้วย bitnami stack หรือไม่? ไฟล์กำหนดค่าจะอยู่ใน/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
siegy22

@ryanzec คำตอบ Nowakers ใช้ไฟล์เดียวกัน แต่อธิบายได้ดีกว่าคุณควรพิจารณายอมรับว่าเป็นคำตอบที่ถูกต้อง
Katu

ที่เราจะหาไฟล์ใน hight sierra
prabakaran iOS

44

<passwordHash>ในองค์ประกอบที่users/<username>/config.xmlจะยอมรับข้อมูลของรูปแบบ

salt:sha256("password{salt}")

ดังนั้นถ้าเกลือของคุณbarและรหัสผ่านของคุณคือfooคุณสามารถสร้าง SHA256 ดังนี้:

echo -n 'foo{bar}' | sha256sum

คุณควรได้รับ7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349ผลลัพธ์ นำกัญชามาใส่เกลือ<passwordHash>:

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>

fooเริ่มต้นใหม่เจนกินส์แล้วลองเข้าระบบด้วยรหัสผ่าน จากนั้นรีเซ็ตรหัสผ่านเป็นอย่างอื่น (Jenkins ใช้ bcrypt เป็นค่าเริ่มต้นและ SHA256 หนึ่งรอบไม่ใช่วิธีที่ปลอดภัยในการจัดเก็บรหัสผ่านคุณจะได้รับ bcrypt hash เมื่อคุณรีเซ็ตรหัสผ่าน)


1
ดูเหมือนจะใช้งานไม่ได้ ตัวอย่างเริ่มต้นด้วยเกลือของ #jbscrypt แล้วกำหนดเขตข้อมูลที่เข้ารหัส $ 2a $ 10 $ สิ่งเหล่านี้หมายความว่าอย่างไร
jrwren

คำตอบของฉันทำงานให้ฉัน เขตข้อมูลเพิ่มเติมที่คุณเห็นสำหรับรูปแบบแฮชที่แตกต่างกัน ห้องสมุดเจนกินส์ใช้สำหรับจัดการรหัสผ่านที่แฮชรองรับมากกว่าหนึ่งรูปแบบ รูปแบบ jbcrypt ที่คุณอ้างถึงมีความปลอดภัยมากกว่า sha256 ที่มีเกลือ แต่รูปแบบ sha256 + salt สามารถสร้างได้ง่ายจากบรรทัดคำสั่ง --- จำได้ว่าจุดประสงค์ของการออกกำลังกายคือการกลับเข้าไปใน Jenkins แล้ว เปลี่ยนรหัสผ่านจากเว็บอินเตอร์เฟสของเจนกินส์
uckelman

สิ่งนี้ไม่ได้ผลสำหรับฉันเช่นกัน ฉันจะพยายามหาข้อมูลเพิ่มเติมเกี่ยวกับ bcrypt
Laurent Picquet

มันใช้งานได้สำหรับฉัน ฉันใช้คำสั่งต่อไปนี้: `` `PASSWORD_DIGEST =" $ (echo -n "$ {ADMIN_PASSWORD} {$ {SALT}}" | sha256sum | awk '{พิมพ์ $ 1}') "echo" รหัสผ่านย่อย: $ PASSWORD_DIGEST -i -e "s # <passwordHash>. * </passwordHash> # <passwordHash> $ {SALT}: $ {PASSWORD_DIGEST} </passwordHash> #" "/ usr / share / jenkins / ref / ผู้ใช้ / admin / config .xml "sed -i -e" s # <apiToken>. * </apiToken> # <apiToken> $ {API_TOKEN} </apiToken> </apiToken> # "" / usr / share / jenkins / ref / ผู้ใช้ / admin / config xml "` ``
Picent Laurent

ขอบคุณมาก ใช้ค่าเดิมที่แน่นอนและใช้งานได้อย่างมีเสน่ห์ กลับเข้ามาใหม่และรีเซ็ตรหัสผ่าน

26

ใน El-Capitan config.xmlไม่สามารถหาได้ที่

/ var / lib / เจนกินส์ /

มันมีอยู่ใน

~ / .jenkins

จากนั้นหลังจากนั้นดังที่คนอื่น ๆ เปิดไฟล์config.xmlและทำการเปลี่ยนแปลงต่อไปนี้

  • ในสิ่งนี้แทนที่<useSecurity>true</useSecurity>ด้วย<useSecurity>false</useSecurity>

  • ลบ<authorizationStrategy>และ<securityRealm>

  • บันทึกและรีสตาร์ทเจนกินส์ ( เริ่มบริการ sudo เจนกินส์รีสตาร์ท )


ฉันไม่สามารถแก้ไขไฟล์ config.xml ได้จริง เมื่อฉันพยายามที่จะบันทึกโดยใช้เสียงเรียกเข้ามันจะโยนมันเป็นไฟล์แบบอ่านอย่างเดียวและการดำเนินการเพื่อให้การเข้าถึงการเขียนไม่ได้รับอนุญาต
Emjey

19

คำตอบในการแก้ไขนั้นถูกต้อง แต่ฉันคิดว่าควรพูดถึงว่า/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>

14

หากต้องการรีเซ็ตโดยไม่ปิดใช้งานความปลอดภัยหากคุณใช้สิทธิ์เมทริกซ์ (อาจปรับได้ง่ายกับวิธีการเข้าสู่ระบบอื่น ๆ ):

  1. ในconfig.xmlตั้งไปdisableSignupfalse
  2. รีสตาร์ทเจนกินส์
  3. ไปที่หน้าเว็บเจนกินส์และลงทะเบียนกับผู้ใช้ใหม่
  4. ในconfig.xmlทำซ้ำหนึ่ง<permission>hudson.model.Hudson.Administer:username</permission>บรรทัดและแทนที่usernameด้วยผู้ใช้ใหม่
  5. ถ้ามันเป็นเซิร์ฟเวอร์ส่วนตัวตั้งdisableSignupกลับไปในtrueconfig.xml
  6. รีสตาร์ทเจนกินส์
  7. ไปที่หน้าเว็บเจนกินส์และเข้าสู่ระบบในฐานะผู้ใช้ใหม่
  8. รีเซ็ตรหัสผ่านของผู้ใช้ดั้งเดิม
  9. เข้าสู่ระบบในฐานะผู้ใช้เดิม

การทำความสะอาดเสริม:

  1. ลบผู้ใช้ใหม่
  2. ลบชั่วคราวสายใน<permission>config.xml

หลักทรัพย์ไม่ได้รับอันตรายระหว่างคำตอบนี้


เพิ่มในการล้างการตั้งค่าการปิดใช้งานการลงทะเบียนกลับเป็นจริงและรีสตาร์ทเจนกินส์
Marc

14

หากต้องการปิดใช้งานการรักษาความปลอดภัย Jenkins ในขั้นตอนง่าย ๆ ใน Linux ให้รันคำสั่งเหล่านี้:

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

มันจะลบuseSecurityและauthorizationStrategyบรรทัดจากconfig.xmlไฟล์กำหนดค่ารูทของคุณแล้วรีสตาร์ทเจนกินส์ของคุณ

ดูเพิ่มเติมที่: ปิดการรักษาความปลอดภัยที่เว็บไซต์ Jenkins


หลังจากที่ได้รับการเข้าถึงเจนกินส์, คุณสามารถเปิดใช้งานการรักษาความปลอดภัยของคุณในการกำหนดค่าการรักษาความปลอดภัยทั่วโลกหน้าโดยการเลือกRealm การควบคุมการเข้าถึง / การรักษาความปลอดภัย หลังจากกว่าไม่ลืมที่จะสร้างผู้ใช้ผู้ดูแลระบบ


มันใช้งานได้สำหรับฉัน แต่มันกำลังข้ามการอนุญาตในตอนนี้
hemanto

@hemanto คุณต้องเปิดใช้งานความปลอดภัยเพื่อเปิดใช้งานการอนุญาตอีกครั้ง ฉันได้อัพเดตคำตอบแล้ว
kenorb

12

คุณบังเอิญล็อคตัวเองออกจากเจนกินส์เนื่องจากความผิดพลาดในการอนุญาตและคุณไม่มีสิทธิ์เข้าถึงฝั่งเซิร์ฟเวอร์เพื่อเปลี่ยนไปใช้ผู้ใช้เจนกินส์หรือรูท ... คุณสามารถทำงานในเจนกินส์และเพิ่มลงในสคริปต์สคริปต์:

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

จากนั้นคลิกสร้างตอนนี้และรีสตาร์ทเจนกินส์ (หรือเซิร์ฟเวอร์ถ้าคุณต้องการ!)


1
คุณจะสร้างงานในเจนกินส์ได้อย่างไรในกรณีที่คุณถูกล็อกด้วยตัวคุณเอง?
GeroldBroser คืนสถานะโมนิก้า

ในกรณีนี้ฉันมีหน้าต่าง Chrome ปกติที่ลงชื่อเข้าใช้และฉันเปลี่ยนการตั้งค่าความปลอดภัยและทดสอบในหน้าต่างที่ไม่ระบุตัวตนก่อนที่จะออกจากหน้าต่างหลัก การทดสอบไม่ให้ฉันเข้าสู่ระบบ แต่เซสชันของฉันยังคงอยู่ในหน้าต่างหลักดังนั้นฉันจึงสามารถซ่อมแซมความเสียหายได้
Nick

1
ฉันเชื่อว่าส่วนหนึ่งของการตั้งค่าความปลอดภัยที่ฉันเปลี่ยนแปลงก็หมายความว่าเซสชันการรับรองความถูกต้องของฉันไม่ได้รับอนุญาตให้เปลี่ยนการกำหนดค่าความปลอดภัยของเจนกินส์อีกต่อไป
Nick

ProjectMatrixAuthorizationทำงานเป็นปัญหานี้หลังจากที่เปิดใช้งาน เมื่อฉันทำการเปลี่ยนแปลงและเริ่ม Jenkins ใหม่ฉันเห็นข้อยกเว้น Java ใน Jenkins-UI เพื่อแก้ไขปัญหานี้ฉันก็ลบบรรทัดที่มีauthorizationStrategyและมันก็โอเคอีกครั้ง เจนกินส์อ่านมันในการเริ่มต้นต่อไปเป็นแท็กที่ว่างเปล่า
Peter Schneider

12

เราสามารถรีเซ็ตรหัสผ่านในขณะที่เปิดการรักษาความปลอดภัย

ไฟล์ config.xml ใน / var / lib / Jenkins / users / admin / ทำหน้าที่เหมือนกับไฟล์ / etc / shadow ระบบ Linux หรือ UNIX-like system หรือไฟล์ SAM ใน Windows ในแง่ที่ว่ามันเก็บแฮชของ รหัสผ่านของบัญชี

หากคุณต้องการรีเซ็ตรหัสผ่านโดยไม่ต้องเข้าสู่ระบบคุณสามารถแก้ไขไฟล์นี้และแทนที่แฮชเก่าด้วยรหัสใหม่ที่สร้างจาก 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

ตอนนี้คุณสามารถเข้าสู่ระบบได้และคุณไม่ได้เปิดระบบค้างไว้เป็นวินาที


5
\.jenkins\secrets\initialAdminPassword

คัดลอกรหัสผ่านจากไฟล์ initialAdminPassword และวางลงในเจนกินส์


4

เพื่อลบความปลอดภัยเริ่มต้นสำหรับเจนกินส์ใน Windows OS

คุณสามารถข้ามผ่านไฟล์ Config.xml ที่สร้างขึ้นภายใน /users/{UserName}/.jenkins

ภายในไฟล์นี้คุณสามารถเปลี่ยนรหัสได้

<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

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

ตรวจสอบให้แน่ใจว่าเริ่มต้นด้วย$ 2aทำให้ jenkens นี้ใช้


4

ขั้นตอนที่ 1: ไปที่ไดเรกทอรี cd .enkins / secret แล้วคุณจะได้รับ 'initialAdminPassword'

ขั้นตอนที่ 2: nano initialAdminPassword

คุณจะได้รับรหัสผ่าน


2

เปลี่ยน<useSecurity>true</useSecurity>ไป<useSecurity>false</useSecurity>จะไม่พอคุณควรลบ<authorizationStrategy>และองค์ประกอบเกินไปและรีสตาร์ทเซิร์ฟเวอร์เจนกินส์ของคุณโดยทำ<securityRealm>sudo service jenkins restart

จำไว้ว่านี้ตั้ง<usesecurity>ไปfalseอาจทำให้เกิดปัญหาสำหรับคุณตั้งแต่คำแนะนำเหล่านี้ได้รับการกล่าวถึงในเอกสารอย่างเป็นทางการของพวกเขาที่นี่


1

วิธีที่ง่ายในการทำเช่นนี้คือการใช้ผู้ดูแลระบบ psw เพื่อเข้าสู่ระบบกับผู้ใช้ผู้ดูแลระบบของคุณ:

  • เปลี่ยนเป็นผู้ใช้รูท: sudo su -
  • คัดลอกรหัสผ่าน: xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • เข้าสู่ระบบด้วยผู้ดูแลระบบและกดctrl + vที่ช่องใส่รหัสผ่าน

ติดตั้ง xclip หากคุณไม่มี:

  • $ sudo apt-get install xclip

การใช้รหัสผ่านเริ่มต้นใช้งานได้สำหรับฉัน เพื่อให้ง่ายคุณสามารถทำ 'cat secret / initialAdminPassword' แทนการติดตั้ง xclip เพียงครั้งเดียว
พอล

บางครั้งรหัสผ่านนี้ไม่มีอยู่ ฉันไม่แน่ใจว่าคุณจะสามารถข้ามการกำหนดค่านี้ได้อย่างไร แต่สำหรับฉันมันไม่มีอยู่และฉันต้องแก้ไข config.xml
vinicius.hisao

1

เจนกินส์มากกว่า KUBENETES และนักเทียบท่า

ในกรณีของเจนกินส์เหนือคอนเทนเนอร์ที่จัดการโดยKubernetes PODนั้นซับซ้อนกว่าเล็กน้อยเนื่องจาก: kubectl exec PODID --namespace=jenkins -it -- /bin/bashคุณจะอนุญาตให้เข้าถึงโดยตรงไปยังคอนเทนเนอร์ที่ใช้เจนกินส์ แต่คุณจะไม่สามารถเข้าถึงรูทได้sudo,viและคำสั่งจำนวนมากไม่สามารถใช้งานได้และดังนั้นจึงแก้ปัญหา มันจำเป็น.

ใช้kubectl describe pod [...]เพื่อค้นหาโหนดที่รัน Pod และ ID คอนเทนเนอร์ของคุณ(docker://...)

  • SSH เข้าสู่โหนด
  • เรียกใช้docker exec -ti -u root -- /bin/bashเพื่อเข้าถึงคอนเทนเนอร์ด้วยสิทธิ์พิเศษของรูท
  • apt-get update
  • sudo apt-get install vim

ข้อแตกต่างที่สองคือไฟล์การกำหนดค่าของ Jenkins ถูกวางไว้ในพา ธ ที่แตกต่างกันซึ่งสอดคล้องกับจุดยึดของโวลุ่มแบบถาวรนั่นคือ/var/jenkins_homeตำแหน่งนี้อาจมีการเปลี่ยนแปลงในอนาคตตรวจสอบว่ากำลังรันอยู่dfอยู่

จากนั้นปิดใช้งานความปลอดภัย - เปลี่ยนจริงเป็นเท็จใน/var/jenkins_home/jenkins/config.xmlไฟล์

<useSecurity>false</useSecurity>

ตอนนี้มันก็เพียงพอแล้วที่จะรีสตาร์ทเจนกินส์การกระทำที่จะทำให้คอนเทนเนอร์และพ็อดตายมันจะสร้างขึ้นอีกครั้งในไม่กี่วินาทีด้วยการอัปเดตการกำหนดค่า (และโอกาสทั้งหมดเช่น vi อัปเดตทั้งหมด) ด้วยปริมาณคงที่

โซลูชันทั้งหมดได้รับการทดสอบบน Google Kubernetes Engine UPDATE ขอให้สังเกตว่าคุณสามารถเรียกใช้ps -auxรหัสผ่านในรูปแบบข้อความล้วนได้แม้จะไม่มีการเข้าถึงรูทก็ตาม

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

วิธีนี้จะปิดการใช้งานความปลอดภัยทั้งหมดในเจนกินส์และตัวเลือกการเข้าสู่ระบบจะหายไป


หากคุณสามารถลบ config.xml ด้วย sudo คุณสามารถแก้ไขได้ด้วย sudo ด้วย เช่น sudo vi ...
Lee Meador

1

การใช้ 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มิฉะนั้นคำสั่งอื่น ๆ ที่หมุนรอบเจนกินส์จะล้มเหลว


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เพื่อแก้ไขจาก Dockerfile ล้มเหลวเนื่องจาก (สมมุติ) config.xml นั้นไม่มีอยู่จนกระทั่งเซิร์ฟเวอร์เริ่มทำงาน


0

ฉันมีปัญหาที่คล้ายกันและการตอบกลับจาก ArtB

ฉันพบว่าผู้ใช้ของฉันไม่มีการกำหนดค่าที่เหมาะสม ดังนั้นสิ่งที่ฉันทำ:

หมายเหตุ: การแก้ไขไฟล์ XML ด้วยตนเองนั้นมีความเสี่ยง ทำตามความเสี่ยงของคุณเอง ตั้งแต่ฉันถูกล็อคแล้วฉันไม่ต้องเสียอะไรมากมาย AFAIK กรณีที่แย่ที่สุดฉันจะลบไฟล์ ~ / .jenkins / config.xml ตามที่กล่าวไว้ก่อนหน้า

**> 1. ssh ไปที่เครื่อง jenkins

  1. cd ~ / .jenkins (ฉันเดาว่าบางการติดตั้งวางไว้ใต้ /var/lib/jenkins/config.xml แต่ไม่ใช่ในกรณีของฉัน)
  2. vi config.xml และภายใต้การอนุญาตแท็กกลยุทธ์ XML เพิ่มส่วนด้านล่าง (เพียงใช้ชื่อผู้ใช้ของฉันแทน "put-your-username")
  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 ดังนั้นฉันสามารถลองแทนที่การอนุญาตกลยุทธ์ด้วยบางสิ่งดังนี้:

หมายเหตุ: มันทำงานได้ในกรณีของฉันเพราะฉันมีปลั๊กอิน 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 เวอร์ชันใหม่สามารถติดตั้งโดย homebrew ดังนั้นสำหรับการพักบรรทัดคำสั่งนี้ต้องใช้:

brew services restart jenkins-lts
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.