Відповіді:
Найпростіше рішення , щоб повністю відключити систему безпеки - зміна 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/initialAdminPassword
ctrl + 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 update
sudo 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