Відповіді:
Найпростіше рішення , щоб повністю відключити систему безпеки - зміна trueв falseв /var/lib/jenkins/config.xmlфайлі.
<useSecurity>true</useSecurity>
Тоді просто перезапустіть Дженкінса, автор
sudo service jenkins restart
А потім перейдіть до панелі адміністратора і знову встановіть усе.
Якщо ви на випадок запускаєте свій Jenkins всередині стручка k8s від докера, що є моїм випадком, і ви не можете запустити serviceкоманду, тоді ви можете просто перезапустити Дженкінс, видаливши pod:
kubectl delete pod <jenkins-pod-name>
Після того, як команда була видана, k8s припинить старий струк і почне новий.
sudo service jenkins restart
find / -name "config.xml" у вашому терміналі.
Ще один спосіб - це вручну редагувати файл конфігурації для вашого користувача (наприклад, /var/lib/jenkins/users/username/config.xml) та оновлювати вміст passwordHash :
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
Щойно ви це зробите, просто перезапустіть Дженкінс і увійдіть, використовуючи цей пароль:
test
<passwordHash>XML тег є дочірнім <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. Потім скиньте свій пароль на щось інше. (Jenkins використовує bcrypt за замовчуванням, і один раунд SHA256 не є безпечним способом зберігання паролів. Ви отримаєте хеш-код криптовалюти, коли ви скинете пароль.)
У програмі El-Capitan config.xml не можна знайти на
/ var / lib / jenkins /
Його доступно в
~ / .jenkins
потім після цього, як і інші згадані, відкрийте файл config.xml і внесіть наступні зміни
У цьому замінити <useSecurity>true</useSecurity>на<useSecurity>false</useSecurity>
Видалити <authorizationStrategy>і<securityRealm>
Збережіть його та перезапустіть джинкіни ( sudo service jenkins restart )
Відповідь про внесення змін була правильною. Але, я думаю, слід згадати, що /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.Під час цієї відповіді жодні цінні папери не пошкодили
Щоб відключити безпеку Дженкінса простими кроками в 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 ... Ви можете зробити роботу в Дженкінсі і додати це до сценарію Shell:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
Потім натисніть «Створити зараз» і перезавантажте Дженкінс (або сервер, якщо вам потрібно!)
ProjectMatrixAuthorization. Коли я роблю зміни та перезапускаю Дженкінс, я бачу виняток Java в інтерфейсі Jenkins-UI. Щоб виправити це, я видалив також рядок authorizationStrategyі знову було добре. Дженкінс читав це на наступному початку як порожній тег.
Ми можемо скинути пароль, залишаючи безпеку ввімкненою.
Файл config.xml в / var / lib / Jenkins / users / admin / діє так, як файл / etc / тінь Linux або UNIX-подібні системи або файл 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
Тепер ви можете увійти, і ви не залишали вашу систему відкритою ні на секунду.
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
переконайтеся, що він починається з $ 2а, оскільки цей джинси використовує
крок 1: перейдіть до каталогу cd .jenkins / secrets, тоді ви отримаєте 'початковийAdminPassword'.
крок 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/initialAdminPasswordctrl + v на поле введення пароля.$ sudo apt-get install xclipДженкінс над KUBENETES та Докер
У разі Дженкінс над контейнером , керованим Kubernetes POD є трохи більш складним , так як: kubectl exec PODID --namespace=jenkins -it -- /bin/bashдозволите доступ безпосередньо до контейнера працює Дженкінс, але ви не будете мати доступ до кореневого , sudo, viі багато команд не доступні , і тому обхідний шлях потрібен.
Використовуйте kubectl describe pod [...]для пошуку вузла, на якому працює ваш Pod та ідентифікатор контейнера(docker://...)
SSH в вузолdocker exec -ti -u root -- /bin/bashдля доступу до контейнера з правами Rootapt-get updatesudo apt-get install vimДруга відмінність полягає в тому, що файл конфігурації Дженкінса розміщується в інший шлях, який відповідає точці монтажу постійного гучності, тобто /var/jenkins_homeце місце може змінитися в майбутньому, перевірте, чи працює воно df.
Потім вимкніть безпеку - змініть /var/jenkins_home/jenkins/config.xmlфайл на істинне на хибне .
<useSecurity>false</useSecurity>
Тепер достатньо перезапустити Дженкінс, дії, які призведуть до вмирання контейнера та Pod, він знову створиться за кілька секунд із оновленою конфігурацією (і всі шанси, такі як vi, оновлення стерті) завдяки постійному гучності.
Все рішення було випробувано на Google Kubernetes Engine.
ОНОВЛЕННЯ
Зауважте, що ви також можете запустити ps -auxпароль у простому тексті, відображається навіть без доступу root.
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.
Перезавантажте джинкіни за допомогою команди sudo /etc/init.d/jenkins restart
Це відключить всю безпеку в Дженнінкі, і параметр входу зникне
Використовуючи 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іншому випадку будь-яка інша команда, що обертається навколо Дженкінса, не зможе.
Щоб дуже просто відключити і безпеку, і майстра запуску, використовуйте властивість JAVA:
-Djenkins.install.runSetupWizard=false
Приємно в тому, що ви можете використовувати його в зображенні Docker таким чином, що ваш контейнер завжди буде запускатися негайно без екрана входу:
# Dockerfile
FROM jenkins/jenkins:lts
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
Зауважте, що, як зазначають інші, на /var/jenkins_homeзображенні sedє конфігурація Jenkins config.xml , однак використання її для модифікації з Dockerfile не вдається, оскільки (імовірно) config.xml не існує до запуску сервера.
У мене була подібна проблема, і після відповіді ArtB,
Я виявив, що мій користувач не мав належних конфігурацій. так що я зробив:
Примітка: змінювати такі файли XML вручну ризиковано. Робіть це на свій страх і ризик. Оскільки мене вже заблокували, втратити не довелося. AFAIK Найгірший випадок, я б видалив файл ~ / .jenkins / config.xml як згадуваний попередній пост.
**> 1. ssh машині джинсинів
- cd ~ / .jenkins (я вважаю, що деякі установки ставлять його під /var/lib/jenkins/config.xml, але не в моєму випадку)
- vi config.xml та під тегом AuthorStrategy xml додайте розділ нижче (я просто використав моє ім'я користувача замість "put-your-username")
- перезапустити дженкіни. у моєму випадку як root служба 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>
Тепер ви можете піти в різні боки. Наприклад, у мене була інтеграція 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>
Відредагуйте файл $ JENKINS_HOME / config.xml та змініть конфігурацію безпеки за допомогою цього:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
Після цього перезапустіть Дженкінс.
Для тих, хто використовує macOS, нову версію просто можна встановити домашньою мовою. тому для відпочинку цей командний рядок повинен використовувати:
brew services restart jenkins-lts