Как сбросить настройки безопасности Jenkins из командной строки? - PullRequest
203 голосов
/ 09 августа 2011

Есть ли способ сбросить все (или просто отключить настройки безопасности) из командной строки без имени пользователя / пароля, поскольку мне удалось полностью заблокировать себя из Jenkins?

Ответы [ 22 ]

5 голосов
/ 18 августа 2016
\.jenkins\secrets\initialAdminPassword

Скопируйте пароль из исходного файла AdminPassword и вставьте его в Jenkins.

4 голосов
/ 07 сентября 2018

шаг-1: перейдите в каталог cd .jenkins / secrets, после чего вы получите «initialAdminPassword».

step-2: nano initialAdminPassword

вы получите пароль

4 голосов
/ 14 июня 2017

Чтобы удалить безопасность по умолчанию для jenkins в ОС Windows,

Вы можете пройти через файл Config.xml, созданный внутри /users/ enjUserName broadcast/.jenkins.

.

Внутри этого файла вы можете изменить код с

<useSecurity>true</useSecurity>

К

<useSecurity>false</useSecurity>
3 голосов
/ 05 мая 2018

1 сначала проверьте расположение, если вы устанавливаете war или Linux или windows на основе этого

например, если война под Linux и для администратора

/ дома / "имя_пользователя" /. Jenkins / пользователи / администратор / config.xml

перейти к этому тегу после #jbcrypt:

<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>

измените этот пароль, используя любой веб-сайт для генератора хэшей bcrypt

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

убедитесь, что он начинается с $ 2a , потому что этот jenkens использует

2 голосов
/ 15 декабря 2014

изменение <useSecurity>true</useSecurity> на <useSecurity>false</useSecurity> будет недостаточно, вам также следует удалить элементы <authorizationStrategy> и <securityRealm> и перезапустить сервер jenkins, выполнив sudo service jenkins restart.

. Запомните это, установитеТолько от <usesecurity> до false может вызвать проблемы у вас, так как эти инструкции упомянуты в их официальной документации здесь .

1 голос
/ 10 мая 2019

Используя 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 голос
/ 05 марта 2019

Часто у вас не будет прав на редактирование файла config.xml.

Самое простое - вернуть config.xml и удалить с помощью команды sudo.

Перезапустите Дженкинса с помощью команды sudo /etc/init.d/jenkins restart

Это отключит всю безопасность в Jenkins, и опция входа исчезнет

1 голос
/ 23 февраля 2018

Jenkins через KUBENETES и Docker

В случае Jenkins над контейнером, управляемым Kubernetes POD , немного сложнее, так как: 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-доступа.

jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]
1 голос
/ 23 марта 2017

Простой выход из этого - использовать admin psw для входа в систему с правами администратора:

  • Сменить пользователя root: sudo su -
  • Скопируйте пароль: xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • Войдите в систему с помощью администратора и нажмите ctrl + v в поле ввода пароля.

Установите xclip, если у вас его нет:

  • $ sudo apt-get install xclip
0 голосов
/ 23 мая 2019

Чтобы очень просто отключить защиту и мастер запуска, используйте свойство 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 не существует пока сервер не запустится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...