Как сбросить настройки безопасности Jenkins из командной строки?

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

19 ответов


самое простое решение-полностью отключить security-change true to false на .

<useSecurity>true</useSecurity>

тогда просто перезапустите Дженкинс, по

sudo service jenkins restart

а затем перейдите в админ панель и установите все еще раз.


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

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

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

test

Я нашел файл, о котором идет речь, расположенный в /var/lib/jenkins под названием 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>

перезапустите Jenkins, затем попробуйте войти в систему с паролем foo. Затем сбросьте пароль на что-то другое. (Дженкинс использует bcrypt по умолчанию, и один раунд SHA256 не является безопасным способом хранения паролей. Вы получите хэш bcrypt, сохраненный при сбросе пароля.)


В Эль-Капитан конфиг.в XML не может быть найдено на

/ var / lib / jenkins/

имеющихся в

~/.Дженкинс!--7-->

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

  • в этом заменить <useSecurity>true</useSecurity> с <useSecurity>false</useSecurity>

  • удалить <authorizationStrategy> и <securityRealm>

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


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

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

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

необязательный очистка:

  1. удалить новый пользователь.
  2. удалить временные <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.

Читайте также: отключить безопасность на сайте Дженкинс


после получения доступа к Jenkins, вы можете повторно включить безопасность в вашем Настройка Глобальной Безопасности страница выбрав Контроль Доступа/Системы Безопасности Царство. После чем не забудьте создать пользователя admin.


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

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

затем нажмите Build Now и перезапустите Jenkins (или сервер, если вам нужно!)


\.jenkins\secrets\initialAdminPassword

скопируйте пароль из файла initialAdminPassword и вставьте его в Jenkins.


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

Вы можете пройти через файл config.xml создан внутри / users/{UserName}/.Дженкинс.

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

<useSecurity>true</useSecurity>

To,

<useSecurity>false</useSecurity>

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

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


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

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

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

  • $ sudo apt-get install xclip

Дженкинс KUBENETES и Докер

в случае Дженкинс над контейнером, управляемым Kubernetes под немного сложнее, так как:kubectl exec PODID --namespace=jenkins -it -- /bin/bash вы разрешите доступ непосредственно к контейнеру под управлением Jenkins, но у вас не будет доступа root, sudo, vi и многие команды недоступны, и поэтому требуется обходной путь.

использовать kubectl describe pod [...], чтобы найти узел, на котором выполняется ваш стручок и контейнер ID (docker://...)

  • SSH в узле
  • выполнить docker exec -ti -u root -- /bin/bash для доступа к контейнеру с правами Root
  • apt-get update
  • sudo apt-get install vim

второе отличие заключается в том, что файл конфигурации Jenkins помещается в другой путь, соответствующий точке монтирования постоянного Тома, т. е. /var/jenkins_home, это место может измениться в будущем, проверить его бег!--12-->.

затем отключите безопасность-измените true на false в .

<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 Сначала проверьте местоположение, если вы устанавливаете war или Linux или windows на основе этого

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

/ home/"Имя_пользователя"/.jenkins / пользователи / admin / config.в XML

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

<passwordHash>#jbcrypt:aDzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>

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

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

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


мы можем сбросить пароль, оставив безопасность.

конфиг.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, правильный префикс для хэшей Дженкинса.

отредактируйте config.xml-файл:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...

после вставки нового хэша сбросьте Jenkins:

(Если вы находитесь в системе с systemd):

sudo systemctl restart Jenkins

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


Шаг 1 : Перейдите в каталог CD .Дженкинс / секреты, то вы получите "initialAdminPassword".

Шаг-2: nano initialAdminPassword

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


у меня была аналогичная проблема, и после ответа от ArtB,

я обнаружил, что у моего пользователя нет надлежащих конфигураций. так что я сделал:

Примечание: ручное изменение таких XML-файлов является рискованным. Делайте это на свой страх и риск. Так как я уже был заперт, мне нечего было терять. AFAIK в худшем случае я бы удалил~/.jenkins / config.xml-файл, как упоминалось ранее.

**> 1. ssh для машины Дженкинса

  1. команда CD ~/.Дженкинс (я думаю, что некоторые установки помещают его под /var/lib/jenkins / config.XML, но не в моем случае )
  2. конфигурация vi.xml, и в authorizationStrategy xml tag, добавьте раздел ниже (просто использовал мое имя пользователя вместо "put-your-username")
  3. перезапустить Дженкинс. в моем случае как корневая служба tomcat7 stop;; service tomcat7 start
  4. попробуйте снова войти в систему. (работал на меня)**

под

добавить:

<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="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"/>

после этого перезапустите Jenkins.