Как сбросить настройки безопасности Дженкинса из командной строки?
есть ли способ сбросить все (или просто отключить настройки безопасности) из командной строки без пользователя/пароля, поскольку мне удалось полностью заблокировать себя из Jenkins
?
19 ответов:
самое простое решение-полностью отключить security-change
true
до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, изменение которого исправило проблему.
The
<passwordHash>
элементusers/<username>/config.xml
будет принимать данные в форматеsalt:sha256("password{salt}")
Итак, если ваша соль
bar
и парольfoo
тогда вы можете произвести SHA256 следующим образом:echo -n 'foo{bar}' | sha256sum
вы должны
7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
как результат. Возьмите гашиш и положите его с солью в<passwordHash>
:<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
перезагрузите Дженкинс, а затем попробуйте войти в систему с паролем
foo
. Затем сбросьте пароль на что-то другое. (Дженкинс использует bcrypt по умолчанию, и один раунд SHA256 не является безопасным способом хранения паролей. Вы получите хэш bcrypt, сохраненный при сбросе пароля.)
В Эль-Капитан config.xml не может быть найдено на
/var / lib / jenkins/
имеющихся в
~/.Дженкинс
затем после этого, как другие упомянутые открыть config.xml файл и внести следующие изменения
в этом заменить
<useSecurity>true</useSecurity>
с<useSecurity>false</useSecurity>
удалить
<authorizationStrategy>
и<securityRealm>
сохраните его и перезапустите Дженкинс (sudo service Jenkins restart)
ответ на изменение было правильным. Тем не менее, я думаю, что следует упомянуть, что
/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
доfalse
.- перезагрузка Дженкинс.
- перейдите на веб-страницу Дженкинса и зарегистрируйтесь с новым пользователем.
- на
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.Читайте также: отключить безопасность на сайте Дженкинс
после получения доступа к Дженкинс, вы можете повторно включить безопасность в вашем Настройка Глобальной Безопасности страница выбрав Контроль Доступа/Системы Безопасности Царство. После чего не забудьте создать пользователя admin.
на случай, если вы случайно заблокируете себя из Jenkins из-за ошибки разрешения, и у вас нет доступа на стороне сервера для переключения на пользователя jenkins или root... Вы можете сделать работу в Jenkins и добавить это в скрипт:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
затем нажмите кнопку построить сейчас и перезапустите Дженкинс (или сервер, если вам нужно!)
\.jenkins\secrets\initialAdminPassword
скопируйте пароль из файла initialAdminPassword и вставьте его в Jenkins.
чтобы удалить по умолчанию безопасность для Дженкинса в ОС Windows,
Вы можете пройти через файл config.xml создан внутри /users / {UserName}/.Дженкинс.
внутри этого файла вы можете изменить код от
<useSecurity>true</useSecurity>
в,
<useSecurity>false</useSecurity>
изменение
<useSecurity>true</useSecurity>
до<useSecurity>false</useSecurity>
не будет достаточно, вы должны удалить<authorizationStrategy>
и<securityRealm>
элементы тоже и перезагрузите сервер Дженкинса, сделавsudo service jenkins restart
.запомни это, сет
<usesecurity>
доfalse
только может вызвать проблему для вас, так как эти инструкции упомянуты в их официальной документации здесь.
простой выход из этого-использовать admin psw для входа в систему с вашим пользователем admin:
- изменить на пользователя root:
sudo su -
- скопировать пароль:
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
- войдите в систему с помощью администратора и нажмите
ctrl + v
в поле ввода пароля.установите xclip, если у вас его нет:
$ sudo apt-get install xclip
Дженкинс над КУБЕНЕТЕСОМ и Докером
в случае Дженкинс над контейнером, управляемым Kubernetes POD немного сложнее, так как:
kubectl exec PODID --namespace=jenkins -it -- /bin/bash
вы позволите получить доступ непосредственно к контейнеру под управлением Дженкинса, но у вас не будет корневого доступа,sudo
,vi
и многие команды недоступны, и поэтому требуется обходной путь.использовать
kubectl describe pod [...]
, чтобы найти узел, на котором выполняется ваш стручок и идентификатор контейнера(docker://...)
SSH
в узле- выполнить
docker exec -ti -u root -- /bin/bash
для доступа к контейнеру с правами суперпользователяapt-get update
sudo apt-get install vim
второе отличие заключается в том, что файл конфигурации Jenkins помещается в другой путь, который соответствует точке подключения постоянного Тома, т. е.
/var/jenkins_home
, это место может измениться в будущем, проверить его работаетdf
.затем отключите безопасность-измените true на false в .
<useSecurity>false</useSecurity>
теперь достаточно перезапустить Jenkins, действие, которое приведет к тому, что контейнер и стручок умрут, он будет создан снова через несколько секунд с обновленной конфигурацией (и все шансы, такие как vi, обновление стерто) благодаря постоянному тому.
все решение было протестировано на движке Google Kubernetes. обновление Заметить это вы можете также запустить
ps -aux
пароль в обычном тексте отображается даже без корневого доступа.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 / users/admin / config.xml
перейти к этому тегу после #jbcrypt:
<passwordHash>#jbcrypt:aDzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
изменить этот пароль, используя использовать любой сайт для bcrypt hash generator
https://www.dailycred.com/article/bcrypt-calculator
убедитесь, что он начинаться с $2a потому что этот дженкенс использует
мы можем сбросить пароль при выходе безопасности.
конфиг.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 в худшем случае я бы удалил~/.Дженкинс/конфиг.xml-файл, как упоминалось ранее.
**> 1. ssh к машине Дженкинса
- cd ~/.Дженкинс (я думаю, что некоторые установки помещают его под /var/lib/jenkins/config.XML, но не в моем случае )
- ви конфигурации.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>