Yanıtlar:
En basit çözüm tamamen devre dışı bırakmak güvenliğe olduğu - değişiklik true
için false
de /var/lib/jenkins/config.xml
dosyaya.
<useSecurity>true</useSecurity>
Sonra Jenkins'i yeniden başlatın.
sudo service jenkins restart
Ardından yönetici paneline gidin ve her şeyi bir kez daha ayarlayın.
Jenkins'inizi bir docker'dan k8s bölmesinin içinde çalıştırıyorsanız, bu benim durumumdur ve service
komutu çalıştıramazsanız , bölmeyi silerek Jenkins'i yeniden başlatabilirsiniz:
kubectl delete pod <jenkins-pod-name>
Komut verildikten sonra, k8'ler eski bölmeyi sonlandıracak ve yeni bir tane başlatacaktır.
sudo service jenkins restart
find / -name "config.xml"
terminalinizde kullanır.
Bir diğer yol elle düzenlemek için kullanıcı için yapılandırma dosyası (örneğin /var/lib/jenkins/users/username/config.xml) ve içeriğini günceller passwordHash :
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
Bunu yaptıktan sonra Jenkins'i yeniden başlatın ve şu şifreyi kullanarak giriş yapın:
test
<passwordHash>
xml etiketi bir çocuktur <hudson.security.HudsonPrivateSecurityRealm_-Details>
. Toplam XML yapısı hakkında fikir edinmek için varsayılan yönetici kullanıcısına bakın.
Söz konusu dosyayı / var / lib / jenkins içinde bulunan config.xml adlı dosyayı buldum, sorunu düzelttim.
/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
İçindeki <passwordHash>
öğe users/<username>/config.xml
biçim verilerini kabul edecek
salt:sha256("password{salt}")
Yani, tuzunuz bar
ve şifreniz ise foo
SHA256'yı şu şekilde üretebilirsiniz:
echo -n 'foo{bar}' | sha256sum
7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
Sonuç olarak almalısın . Karma alın ve tuz ile içine koyun <passwordHash>
:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
Jenkins'i yeniden başlatın, ardından şifre ile giriş yapmayı deneyin foo
. Ardından şifrenizi başka bir şeye sıfırlayın. (Jenkins varsayılan olarak bcrypt kullanır ve bir tur SHA256 parolaları saklamanın güvenli bir yolu değildir. Parolanızı sıfırladığınızda bcrypt karması depolanır.)
El-Capitan'da config.xml adresinde bulunamadı
/ Var / lib / Jenkins /
Mevcut
~ / .Jenkins
bundan sonra da belirtildiği gibi config.xml dosyasını açın ve aşağıdaki değişiklikleri yapın
Bu ise yerini <useSecurity>true</useSecurity>
ile<useSecurity>false</useSecurity>
Kaldır <authorizationStrategy>
ve<securityRealm>
Kaydet ve jenkins'i yeniden başlat ( sudo service jenkins restart )
Değiştirme cevabı doğruydu. Yine de, /var/lib/jenkins/config.xml
"Proje Tabanlı Matris Yetkilendirme Stratejisi" ni etkinleştirdiyseniz böyle bir şeyin göründüğünden bahsetmek gerekir . /var/lib/jenkins/config.xml
Jenkinleri silmek ve yeniden başlatmak da hile yapar. Ayrıca kullanıcıları /var/lib/jenkins/users
sıfırdan başlamak için sildim .
<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>
Matris izinlerini kullanıyorsanız (muhtemelen diğer giriş yöntemlerine kolayca uyarlanabilir) güvenliği devre dışı bırakmadan sıfırlamak için :
config.xml
, set disableSignup
için false
.config.xml
, <permission>hudson.model.Hudson.Administer:username</permission>
satırlardan birini kopyalayın ve değiştirinusername
ve yeni kullanıcıyla .disableSignup
tekrar true
giriş yapın config.xml
.İsteğe bağlı temizleme:
<permission>
satırı silin config.xml
.Bu cevap sırasında menkul kıymetlere zarar verilmedi.
Linux'ta basit adımlarla Jenkins güvenliğini devre dışı bırakmak için şu komutları çalıştırın:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
Kaldırılacak useSecurity
ve authorizationStrategy
satırlarınızconfig.xml
Kök yapılandırma dosyanızdan ve Jenkins'iniz yeniden başlatılır.
Ayrıca bkz: Jenkins web sitesinde güvenliği devre dışı bırakma
Jenkins'e eriştikten sonra , Erişim Denetimi / Güvenlik Bölgesi'ni seçerek Global Güvenliği Yapılandırma sayfanızda güvenliği yeniden etkinleştirebilirsiniz . Sonra yönetici kullanıcı oluşturmayı unutmayın .
Offchance üzerinde yanlışlıkla izin hatası nedeniyle Jenkins dışında kilitlemek ve jenkins kullanıcı veya kök geçmek için sunucu tarafı erişiminiz yok ... Jenkins bir iş yapabilir ve bunu Kabuk komut dosyasına ekleyebilirsiniz:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
Ardından Şimdi Oluştur'u tıklayın ve Jenkins'i (veya gerekirse sunucuyu!) Yeniden başlatın.
ProjectMatrixAuthorization
. Değişikliği yapıp Jenkins'i yeniden başlattığımda Jenkins-UI'de bir Java-istisnası görüyorum. Bunu düzeltmek için, hattı da kaldırdım authorizationStrategy
ve tekrar iyiydi. Jenkins bir sonraki başlangıçta boş bir etiket olarak okudu.
Güvenliği açık bırakırken şifreyi sıfırlayabiliriz.
/ Var / lib / Jenkins / users / admin / içindeki config.xml dosyası, / etc / shadow dosyası Linux veya UNIX benzeri sistemler veya Windows'daki SAM dosyası gibi, hesabınızın şifresi.
Giriş yapmadan şifreyi sıfırlamanız gerekirse, bu dosyayı düzenleyebilir ve eski karmayı bcrypt'ten oluşturulan yeni bir adla değiştirebilirsiniz:
$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'
Bu, karma 2a önekiyle Jenkins karma için doğru öneki verir.
Şimdi config.xml dosyasını düzenleyin:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
Yeni karmayı ekledikten sonra Jenkins'i sıfırlayın:
(systemd olan bir sistemdeyseniz):
sudo systemctl restart Jenkins
Şimdi giriş yapabilirsiniz ve sisteminizi bir saniyeliğine açık bırakmadınız.
1 Savaş veya Linux veya Windows yüklerseniz konumu kontrol edin.
örneğin Linux altında savaş ve yönetici kullanıcı için
/home/"User_NAME"/.jenkins/users/admin/config.xml
#jbcrypt'den sonra bu etikete git:
<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
bcrypt hash generator için herhangi bir web sitesi kullanarak bu şifreyi değiştirin
https://www.dailycred.com/article/bcrypt-calculator
$ 2a ile başladığından emin olun çünkü bu bir jenkens kullanır
adım-1: cd .jenkins / secrets dizinine giderseniz, 'initialAdminPassword' alırsınız.
2. adım: nano initialAdminPassword
bir şifre alacaksın
Değişen <useSecurity>true</useSecurity>
için <useSecurity>false</useSecurity>
yeterli olmayacak, kaldırmak gerekir <authorizationStrategy>
ve <securityRealm>
çok element ve yaparak Jenkins sunucuyu yeniden başlatın sudo service jenkins restart
.
Bu, set hatırlamak <usesecurity>
içinfalse
bu talimatlar hırsız resmi belgelerinde söz ettiği, sizin için bir sorun neden olabilir sadece burada .
sudo su -
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
ctrl + v
giriş yapın şifre giriş kutusuna .$ sudo apt-get install xclip
Jenkins, KUBENETES ve Docker üzerinden
Durumunda Jenkins bir tarafından yönetilen bir kap üzerinde Kubernetes POD biraz daha karmaşık beri geçerli: kubectl exec PODID --namespace=jenkins -it -- /bin/bash
doğrudan Jenkins çalışan kaba ulaşmak için yeterli olacaktır, ancak kök erişemez , sudo
, vi
ve birçok komutları dolayısıyla geçici bir çözüm mevcut değildir ve gereklidir.
kubectl describe pod [...]
Kapsülünüzü çalıştıran düğümü ve kapsayıcı kimliğini bulmak için kullanın(docker://...)
SSH
düğümedocker exec -ti -u root -- /bin/bash
Root ayrıcalıklarıyla kaba erişmek için çalıştırınapt-get update
sudo apt-get install vim
İkinci fark , Jenkins yapılandırma dosyasının kalıcı birimin montaj noktasına karşılık gelen farklı bir yola yerleştirilmesidir, yani /var/jenkins_home
bu konum gelecekte değişebilir, çalışıp çalışmadığını kontrol edebilir df
.
Ardından güvenliği devre dışı bırakın - /var/jenkins_home/jenkins/config.xml
dosyada true değerini false olarak değiştirin .
<useSecurity>false</useSecurity>
Şimdi Jenkins'i, kap ve Pod'un ölmesine neden olacak eylemi yeniden başlatmak yeterli, kalıcı hacim sayesinde güncellenen yapılandırma (ve vi, güncelleme silme gibi tüm şanslar) ile birkaç saniye içinde tekrar oluşturulacak.
Tüm çözüm Google Kubernetes Engine'de test edildi.
GÜNCELLEMEps -aux
Parolayı düz metin
olarak da çalıştırabileceğinize dikkat edin, root erişimi olmasa bile.
jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]
Çoğu zaman config.xml dosyasını düzenleme izniniz olmaz.
En basit şey, config.xml
sudo komutunu kullanarak ve silmek olacaktır.
Jenkins komutunu kullanarak yeniden başlatın sudo /etc/init.d/jenkins restart
Bu, Jenkins'teki tüm güvenliği devre dışı bırakır ve oturum açma seçeneği kaybolur
Bcrypt kullanarak bu sorunu çözebilirsiniz. Bash ve python kullanarak işlemi otomatikleştirmeye çalışan biri için @ Reem yanıtını genişletme.
#!/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
Şifreyi burada kodlanmış olarak sakladım, ancak gereksinime bağlı olarak bir kullanıcı girişi olabilir. Ayrıca, sleep
aksi takdirde Jenkins'in etrafında dönen diğer komutların başarısız olacağını da eklediğinizden emin olun .
Hem güvenliği hem de başlatma sihirbazını çok basit bir şekilde devre dışı bırakmak için JAVA özelliğini kullanın:
-Djenkins.install.runSetupWizard=false
Bununla ilgili güzel olan şey, bir Docker görüntüsünde kullanabilmenizdir, böylece konteyneriniz her zaman giriş ekranı olmadan hemen başlayacaktır:
# Dockerfile
FROM jenkins/jenkins:lts
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
Başkaları tarafından belirtildiği gibi, Jenkins config.xml dosyasının /var/jenkins_home
görüntüde olduğunu, ancak sed
Dockerfile'dan değiştirmek için kullanmanın başarısız olduğunu unutmayın, çünkü (muhtemelen) config.xml sunucu başlatılana kadar mevcut değildir.
Benzer bir sorunum vardı ve ArtB'nin yanıtını takiben,
Kullanıcımın uygun yapılandırmalara sahip olmadığını buldum. yani ne yaptım:
Not: Bu tür XML dosyalarını manuel olarak değiştirmek risklidir. Kendi sorumluluğunuzdadır. Zaten kilitli olduğum için kaybedecek çok şeyim yoktu. AFAIK En kötü durumda ~ / .jenkins / config.xml dosyasını önceki yazı olarak silebilirdim.
**> 1. ssh için jenkins makinesi
- cd ~ / .jenkins (Bazı kurulumların /var/lib/jenkins/config.xml altına koyduğunu düşünüyorum, ancak benim durumumda değil)
- vi config.xml ve authorizationStrategy xml etiketi altında aşağıdaki bölümü ekleyin ("kullanıcı adınızı girin" yerine kullanıcı adımı kullandım)
- cenkins'i yeniden başlatın. benim durumumda kök hizmet olarak tomcat7 dur; ; hizmet tomcat7 başlangıç
- Tekrar giriş yapmayı deneyin. (benim için çalıştı) **
altında
Ekle:
<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>
Şimdi, farklı yönlere gidebilirsiniz. Örneğin github oauth entegrasyonu vardı, bu yüzden authorizationStrategy'yi aşağıdaki gibi bir şeyle değiştirmeye çalışabilirdim:
Not :, Benim durumumda çalıştı, çünkü önceden yapılandırılmış belirli bir github oauth eklentisi vardı. Yani önceki çözümden daha risklidir.
<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 dosyasını düzenleyin ve güvenlik yapılandırmasını şu şekilde değiştirin:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
Bundan sonra Jenkins'i yeniden başlatın.
MacOS kullanan biri için, yeni sürüm sadece homebrew tarafından yüklenebilir. bu nedenle dinlenme için bu komut satırı aşağıdakileri kullanmalıdır:
brew services restart jenkins-lts