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

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

Ответы [ 22 ]

252 голосов
/ 05 декабря 2013

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

161 голосов
/ 09 мая 2014

Другим способом было бы вручную отредактировать файл конфигурации для вашего пользователя (например, /var/lib/jenkins/users/username/config.xml) и обновить содержимое passwordHash :

<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>

Как только вы это сделаете, просто перезапустите Jenkins и войдите в систему, используя этот пароль:

test
44 голосов
/ 09 августа 2011

Я нашел рассматриваемый файл в / var / lib / jenkins, который называется config.xml, и изменил его, чтобы устранить проблему.

40 голосов
/ 03 июня 2014

Элемент <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. Затем сбросьте свой пароль на что-то другое. (Дженкинс использует bcrypt по умолчанию, и один раунд SHA256 не является безопасным способом хранения паролей. Вы получите хэш bcrypt, сохраненный при сбросе пароля.)

22 голосов
/ 08 марта 2016

В El-Capitan config.xml невозможно найти по адресу

/ var / lib / jenkins /

Доступно в

~ / .jenkins

, затем, как уже упоминалось, откройте файл config.xml и внесите следующие изменения

  • Замените <useSecurity>true</useSecurity> на <useSecurity>false</useSecurity>

  • Удалите <authorizationStrategy> и <securityRealm>

  • Сохраните егои перезапустите jenkins ( sudo service jenkins restart )

18 голосов
/ 11 июня 2012

Ответ на изменение был правильным.Тем не менее, я думаю, стоит упомянуть, что /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>
14 голосов
/ 11 января 2014

Для сброса без отключения защиты , если вы используете разрешения матрицы (вероятно, легко адаптируемые к другим методам входа в систему):

  1. In config.xml, установите disableSignup на false.
  2. Перезагрузка Дженкинс.
  3. Перейдите на веб-страницу Jenkins и зарегистрируйтесь с новым пользователем .
  4. В config.xml, дублируйте одну из <permission>hudson.model.Hudson.Administer:username</permission> строк и замените username новым пользователем.
  5. Если это частный сервер, установите disableSignup обратно на true в config.xml.
  6. Перезагрузка Дженкинс.
  7. Перейдите на веб-страницу Jenkins и войдите как новый пользователь .
  8. Сброс пароля исходного пользователя.
  9. Войдите в систему как первоначальный пользователь.

Дополнительная очистка:

  1. Удалить нового пользователя.
  2. Удалить временную строку <permission> в config.xml.

При этом ответе ценные бумаги не пострадали.

14 голосов
/ 10 июля 2016

Чтобы отключить защиту 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, вы можете снова включить защиту в Настройка глобальной безопасности, выбрав Контроль доступа / Область безопасности .После этого не забудьте создать администратора .

12 голосов
/ 07 марта 2015

На случай, если вы случайно заблокируете себя из Jenkins из-за ошибки разрешения, и у вас нет доступа на стороне сервера, чтобы переключиться на пользователя jenkins или root ... Вы можете сделать работу в Jenkins и добавить это кСценарий оболочки:

sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml

Затем нажмите «Построить сейчас» и перезапустите Jenkins (или сервер, если вам нужно!)

10 голосов
/ 10 июля 2018

Мы можем сбросить пароль, оставив защиту включенной.

Файл 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

Теперь вы можете войти в систему иВы не оставили свою систему открытой ни на секунду.

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