Как сбросить настройки безопасности 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>
восстановить без отключения безопасность если вы используете разрешения матрицы (возможно, легко адаптируемые к другим методам входа в систему):
- на
config.xml
, setdisableSignup
tofalse
. - перезагрузка Дженкинс.
- перейдите на веб-страницу Дженкинса и зарегистрируйтесь с новым пользователем.
- на
config.xml
, дубликат одного из<permission>hudson.model.Hudson.Administer:username</permission>
строки и заменитьusername
С новый пользователь. - если это частный сервер, установить
disableSignup
наtrue
наconfig.xml
. - перезагрузка Дженкинс.
- перейдите на веб-страницу Дженкинса и войти как новый пользователь!--13-->.
- сбросить пароль оригинальная пользователей.
- вход как оригинальный пользователь.
необязательный очистка:
- удалить новый пользователь.
- удалить временные
<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 для машины Дженкинса
- команда CD ~/.Дженкинс (я думаю, что некоторые установки помещают его под /var/lib/jenkins / config.XML, но не в моем случае )
- конфигурация vi.xml, и в authorizationStrategy xml tag, добавьте раздел ниже (просто использовал мое имя пользователя вместо "put-your-username")
- перезапустить Дженкинс. в моем случае как корневая служба tomcat7 stop;; service 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="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.