Есть ли способ reset all (или просто отключить параметры безопасности) из командной строки без пользователя/пароля, поскольку мне удалось полностью заблокировать себя из Jenkins
?
Как reset Настройки безопасности Jenkins из командной строки?
Ответ 1
Самое простое решение - полностью отключить защиту - измените true
на false
в файле /var/lib/jenkins/config.xml
.
<useSecurity>true</useSecurity>
Затем просто перезапустите Дженкинс,
sudo service jenkins restart
А затем зайдите в админ-панель и настройте все заново.
Если вы в случае запускаете свой Jenkins в модуле k8s из докера, что в моем случае, и не можете запустить service
команду, то вы можете просто перезапустить Jenkins, удалив модуль:
kubectl delete pod <jenkins-pod-name>
Как только команда будет введена, k8s прекратит работу старого модуля и начнет новый.
Ответ 2
Другим способом было бы вручную отредактировать файл конфигурации для вашего пользователя (например,/var/lib/jenkins/users/username/config.xml) и обновить содержимое passwordHash:
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
Как только вы это сделаете, просто запустите Jenkins и войдите в систему, используя этот пароль:
test
Ответ 3
Я нашел файл, о котором идет речь, находящийся в /var/lib/jenkins, называемый config.xml, модифицирующий это исправление проблемы.
Ответ 4
Элемент <passwordHash>
в users/<username>/config.xml
будет принимать данные формата
salt:sha256("password{salt}")
Итак, если ваша соль bar
и ваш пароль foo
, вы можете создать SHA256 следующим образом:
echo -n 'foo{bar}' | sha256sum
В результате вы получите 7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
. Возьмите хэш и поместите его с солью в <passwordHash>
:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
Перезапустите Jenkins, затем попробуйте войти в систему с паролем foo
. Затем reset ваш пароль к чему-то другому. (Дженкинс использует bcrypt по умолчанию, а один раунд SHA256 не является безопасным способом хранения паролей. Вы получите хэш-код bcrypt, сохраненный при reset вашем пароле.)
Ответ 5
В El-Capitan config.xml не может быть найден на
/вар/Library/Jenkins/
Его доступно в
~/.jenkins
после чего, как и другие, откройте файл config.xml и внесите следующие изменения
-
В этом случае замените
<useSecurity>true</useSecurity>
на<useSecurity>false</useSecurity>
-
Удалите
<authorizationStrategy>
и<securityRealm>
-
Сохраните его и перезапустите jenkins (перезагрузка sudo service jenkins)
Ответ 6
Ответ на изменение был правильным. Тем не менее, я думаю, следует отметить, что /var/lib/jenkins/config.xml
выглядит примерно так, если вы активировали "Стратегию авторизации матрицы на основе проектов". Удаление /var/lib/jenkins/config.xml
и перезапуск jenkins также делает трюк. Я также удалил пользователей в /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>
Ответ 7
В reset он без отключения безопасности, если вы используете разрешения на матрицу (возможно, легко адаптируетесь к другим методам входа):
- В
config.xml
установитеdisableSignup
наfalse
. - Перезапустить Дженкинс.
- Перейдите на веб-страницу Jenkins и зарегистрируйтесь с новым пользователем.
- В
config.xml
дублируйте одну из строк<permission>hudson.model.Hudson.Administer:username</permission>
и заменитеusername
на нового пользователя. - Если это частный сервер, установите
disableSignup
обратно наtrue
вconfig.xml
. - Перезапустить Дженкинс.
- Перейдите на веб-страницу Jenkins и войдите как новый пользователь.
- Reset пароль исходного пользователя.
- Войдите в в качестве исходного пользователя.
Дополнительная очистка:
- Удалить нового пользователя.
- Удалите временную строку
<permission>
вconfig.xml
.
Во время этого ответа никакие ценные бумаги не пострадали.
Ответ 8
Чтобы отключить защиту 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.
Смотрите также: Отключить защиту на сайте Jenkins
Получив доступ к Jenkins, вы можете снова включить защиту на странице настройки глобальной безопасности, выбрав Область управления доступом/безопасностью. После этого не забудьте создать пользователя с правами администратора.
Ответ 9
В отключенном состоянии вы случайно заблокируете себя из Дженкинса из-за ошибки разрешения, и у вас нет доступа к серверу для переключения на пользователя или корень пользователя jenkins... Вы можете выполнить работу в Jenkins и добавить это к Shell Script:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
Затем нажмите "Создать сейчас" и перезапустите Jenkins (или сервер, если вам нужно!)
Ответ 10
Мы можем сбросить пароль, оставив защиту включенной.
Файл config.xml в /var/lib/Jenkins/users/admin/действует примерно так же, как файл /etc/shadow в Linux или UNIX-подобных системах или файл SAM в Windows, в том смысле, что он хранит хэш пароль от аккаунта.
Если вам нужно сбросить пароль без входа в систему, вы можете отредактировать этот файл и заменить старый хэш новым, сгенерированным из bcrypt:
$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'
Это выведет ваш хеш с префиксом 2a, правильным префиксом для хешей Jenkins.
Теперь отредактируйте файл config.xml:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
Как только вы вставите новый хеш, сбросьте Jenkins:
(если вы используете систему с systemd):
sudo systemctl restart Jenkins
Теперь вы можете войти в систему, и вы не оставили свою систему открытой ни на секунду.
Ответ 11
\.jenkins\secrets\initialAdminPassword
Скопируйте пароль из файла initialAdminPassword и вставьте его в Jenkins.
Ответ 12
Чтобы удалить по умолчанию защиту для jenkins в ОС Windows,
Вы можете пройти через файл Config.xml, созданный внутри /users/ {UserName}/. jenkins.
Внутри этого файла вы можете изменить код из
<useSecurity>true</useSecurity>
Для
<useSecurity>false</useSecurity>
Ответ 13
Шаг 1: перейдите в каталог cd.jenkins/secrets, после чего вы получите "initialAdminPassword".
Шаг 2: нано инициал AdminPassword
вы получите пароль
Ответ 14
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 использует
Ответ 15
изменение <useSecurity>true</useSecurity>
на <useSecurity>false</useSecurity>
будет недостаточным, вы должны также удалить элементы <authorizationStrategy>
и <securityRealm>
и перезапустить сервер jenkins, выполнив sudo service jenkins restart
.
помните это, установите <usesecurity>
в false
только может вызвать для вас проблему, так как эти инструкции упомянуты в официальной документации здесь.
Ответ 16
Легкий выход из этого - использовать admin psw для входа в систему с вашим администратором:
- Изменить пользователя root:
sudo su -
- Скопируйте пароль:
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
- Войдите в систему с помощью администратора и нажмите
ctrl + v
в поле ввода пароля.
Установите xclip, если у вас его нет:
-
$ sudo apt-get install xclip
Ответ 17
Дженкинс над КУБЕНЕТЕСОМ и Докером
В случае Jenkins над контейнером, управляемым POD из Kubernetes, это немного сложнее, поскольку: kubectl exec PODID --namespace=jenkins -it --/bin/bash
позволит вам получить доступ напрямую к контейнеру, в котором работает Jenkins, но вы не будет иметь root-доступа, sudo
, vi
и многие команды недоступны, и поэтому требуется обходной путь.
Используйте kubectl describe pod [...]
чтобы найти узел, на котором запущен ваш Pod, и идентификатор контейнера (docker://...)
-
SSH
в узел - запустите
docker exec -ti -u root --/bin/bash
чтобы получить доступ к контейнеру с привилегиями Root -
apt-get update
-
sudo apt-get install vim
Второе отличие состоит в том, что файл конфигурации Jenkins размещается по другому пути, который соответствует точке подключения постоянного тома, т.е. /var/jenkins_home
, это расположение может измениться в будущем, проверьте его, запустив df
.
Затем отключите защиту - измените true на false в файле /var/jenkins_home/jenkins/config.xml
.
<useSecurity>false</useSecurity>
Теперь достаточно перезапустить Jenkins, действие, которое приведет к смерти контейнера и модуля, оно будет создано снова через несколько секунд с обновленной конфигурацией (и все шансы, такие как vi, обновление стерты) благодаря постоянному тому.
Все решение было протестировано на Google Kubernetes Engine. ОБНОВЛЕНИЕ Обратите внимание, что вы также можете запустить ps -aux
пароль в виде обычного текста отображается даже без доступа root.
[email protected]:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]
Ответ 18
Часто у вас не будет прав на редактирование файла config.xml.
Простейшей вещью было бы взять обратно config.xml
и удалить с помощью команды sudo.
Перезапустите jenkins с помощью команды sudo/etc/init.d/jenkins restart
Это отключит всю безопасность в Jenkins, и опция входа исчезнет
Ответ 19
Используя 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 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
иначе любая другая команда, вращающаяся вокруг Дженкинса, потерпит неудачу.
Ответ 20
У меня была аналогичная проблема, и после ответа от ArtB,
Я обнаружил, что у моего пользователя нет правильных конфигураций. так что я сделал:
Примечание. Ручная модификация таких файлов XML является рискованной. Сделайте это на свой страх и риск. Поскольку я уже был заперт, мне нечего было терять. AFAIK В худшем случае я бы удалил файл ~/.jenkins/config.xml, как указано в предыдущем сообщении.
** > 1. ssh для машины дженкинсов
- cd ~/.jenkins(я предполагаю, что некоторые установки помещают его под /var/lib/jenkins/config.xml, но не в моем случае)
- vi config.xml, а под тегом authorizationStrategy xml добавьте раздел ниже (просто используйте мое имя пользователя вместо "put-your-username" )
- перезапустить jenkins. в моем случае как root service tomcat7 stop;; сервис tomcat7 start
- Попробуйте снова войти в систему. (работал у меня) **
под
добавить:
<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, поэтому я мог бы попытаться заменить authorizationStrategy чем-то вроде ниже:
Примечание:, Это работало в моем случае, потому что у меня был настроенный плагин github oauth, который уже был настроен. Таким образом, это более рискованно, чем предыдущее решение.
<authorizationStrategy class="org.jenkinsci.plugins.GithubAuthorizationStrategy" plugin="[email protected]">
<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>
Ответ 21
Отредактируйте файл $JENKINS_HOME/config.xml и измените конфигурацию безопасности следующим образом:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
После этого перезапустите Jenkins.
Ответ 22
Чтобы очень просто отключить как безопасность, так и мастер запуска, используйте свойство 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 не существует до тех пор, пока сервер не запустится,