Czy istnieje sposób na zresetowanie wszystkich (lub po prostu wyłączenie ustawień bezpieczeństwa) z wiersza poleceń bez użytkownika / hasła, ponieważ udało mi się całkowicie zablokować Jenkins
?
linux
security
jenkins
command-line
ryanzec
źródło
źródło
sudo service jenkins restart
find / -name "config.xml"
w twoim terminalu.Innym sposobem może być ręczna edycja pliku konfiguracyjnego dla użytkownika (np. /Var/lib/jenkins/users/username/config.xml) i zaktualizowanie zawartości passwordHash :
Po wykonaniu tej czynności ponownie uruchom Jenkins i zaloguj się przy użyciu tego hasła:
źródło
<passwordHash>
tag xml jest dzieckiem<hudson.security.HudsonPrivateSecurityRealm_-Details>
. Spójrz na domyślnego użytkownika administratora, aby dowiedzieć się o całkowitej strukturze XML.Znalazłem plik znajdujący się w / var / lib / jenkins o nazwie config.xml, modyfikując to, rozwiązując problem.
źródło
/Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/users/admin/config.xml
<passwordHash>
Elementemusers/<username>/config.xml
będzie akceptować dane o formacieTak więc, jeśli twoja sól
bar
i twoje hasło tofoo
, możesz wyprodukować SHA256 w następujący sposób:Powinieneś dostać
7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
w wyniku. Weź skrót i włóż go razem z solą do<passwordHash>
:Uruchom ponownie Jenkins, a następnie spróbuj zalogować się przy użyciu hasła
foo
. Następnie zresetuj hasło do czegoś innego. (Jenkins domyślnie korzysta z bcrypt, a jedna runda SHA256 nie jest bezpiecznym sposobem przechowywania haseł. Otrzymasz skrót bcrypt po zresetowaniu hasła).źródło
W El-Capitan config.xml nie można znaleźć na
Jest dostępny w
następnie, jak wspomniano wcześniej, otwórz plik config.xml i wprowadź następujące zmiany
W ten wymienić
<useSecurity>true</useSecurity>
z<useSecurity>false</useSecurity>
Usuń
<authorizationStrategy>
i<securityRealm>
Zapisz go i zrestartuj jenkins ( sudo service jenkins restart )
źródło
Odpowiedź na modyfikację była poprawna. Myślę jednak, że należy wspomnieć, że
/var/lib/jenkins/config.xml
wygląda to tak, jeśli aktywowano „Strategię autoryzacji matrycy opartej na projekcie”. Usuwanie/var/lib/jenkins/config.xml
i ponowne uruchamianie Jenkins również załatwia sprawę. Usunąłem również użytkowników,/var/lib/jenkins/users
aby zacząć od zera.źródło
Aby go zresetować bez wyłączania zabezpieczeń, jeśli korzystasz z uprawnień macierzy (prawdopodobnie łatwo można je dostosować do innych metod logowania):
config.xml
ustawionodisableSignup
nafalse
.config.xml
zduplikuj jedną z<permission>hudson.model.Hudson.Administer:username</permission>
linii i zamieńusername
go nowym użytkownikiem.disableSignup
z powrotemtrue
wconfig.xml
.Opcjonalne czyszczenie:
<permission>
wiersz wconfig.xml
.Żadne papiery wartościowe nie zostały naruszone podczas tej odpowiedzi.
źródło
Aby wyłączyć zabezpieczenia Jenkins w prostych krokach w systemie Linux, uruchom następujące polecenia:
Usunie
useSecurity
iauthorizationStrategy
linie z twojegoconfig.xml
pliku konfiguracyjnym korzeni i ponownie uruchom Jenkins.Zobacz także: Wyłącz zabezpieczenia na stronie Jenkins
Po uzyskaniu dostępu do Jenkins możesz ponownie włączyć zabezpieczenia na stronie Konfiguruj zabezpieczenia globalne , wybierając dziedzinę Kontrola dostępu / Bezpieczeństwo . Potem nie zapomnij utworzyć użytkownika administratora .
źródło
Na przykład przypadkowo blokujesz się z Jenkinsa z powodu błędu uprawnień i nie masz dostępu do serwera, aby przełączyć się na użytkownika lub roota Jenkinsa. Możesz wykonać pracę w Jenkinsie i dodać to do Skryptu powłoki:
Następnie kliknij Build Now i zrestartuj Jenkins (lub serwer, jeśli potrzebujesz!)
źródło
ProjectMatrixAuthorization
. Kiedy dokonam zmiany i zrestartuję Jenkins, widzę wyjątek Java w interfejsie Jenkins-UI. Aby to naprawić, usunąłem również wiersz zauthorizationStrategy
i znów było w porządku. Jenkins odczytał go przy następnym uruchomieniu jako pusty tag.Możemy zresetować hasło, pozostawiając włączone zabezpieczenia.
Plik config.xml w / var / lib / Jenkins / users / admin / działa podobnie jak plik / etc / shadow Linux lub UNIX-podobny system lub plik SAM w Windows, w tym sensie, że przechowuje skrót hasło do konta.
Jeśli musisz zresetować hasło bez logowania, możesz edytować ten plik i zamienić stary skrót na nowy wygenerowany z bcrypt:
Spowoduje to wyświetlenie Twojego skrótu, z prefiksem 2a, poprawnym prefiksem dla skrótów Jenkins.
Teraz edytuj plik config.xml:
Po wstawieniu nowego skrótu zresetuj Jenkins:
(jeśli korzystasz z systemu z systemd):
Możesz się teraz zalogować i przez chwilę nie pozostawiłeś systemu otwartego.
źródło
Skopiuj hasło z pliku initialAdminPassword i wklej je do Jenkins.
źródło
Aby usunąć domyślnie zabezpieczenia Jenkins w systemie operacyjnym Windows,
Możesz przeglądać plik Config.xml utworzony w pliku /users/{UserName}/.jenkins.
Wewnątrz tego pliku możesz zmienić kod
Do,
źródło
1 najpierw sprawdź lokalizację, jeśli na tej podstawie zainstalujesz war, Linux lub Windows
na przykład jeśli wojna pod Linuksem i dla administratora
przejdź do tego znacznika po #jbcrypt:
zmień to hasło za pomocą dowolnej witryny generatora skrótów bcrypt
upewnij się, że zaczyna się od 2 $, ponieważ ten jenkens używa
źródło
krok 1: przejdź do katalogu cd .jenkins / secrets, a następnie otrzymasz „initialAdminPassword”.
krok 2: nano initialAdminPassword
dostaniesz hasło
źródło
zmieniając
<useSecurity>true</useSecurity>
się<useSecurity>false</useSecurity>
nie będzie wystarczające, należy usunąć<authorizationStrategy>
i<securityRealm>
elementy zbyt i zrestartować serwer Jenkins robiącsudo service jenkins restart
.tym pamiętać, ustawiony
<usesecurity>
nafalse
tylko może powodować problem dla ciebie, ponieważ instrukcje te są wymienione w oficjalnej dokumentacji Thier tutaj .źródło
Prostym wyjściem z tego jest użycie psw administratora do zalogowania się z administratorem:
sudo su -
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
ctrl + v
pole wprowadzania hasła.Zainstaluj xclip, jeśli go nie masz:
$ sudo apt-get install xclip
źródło
W przypadku Jenkins nad pojemnikiem zarządzanego przez Kubernetes POD jest nieco bardziej skomplikowana od:
kubectl exec PODID --namespace=jenkins -it -- /bin/bash
pozwolisz, aby uzyskać dostęp bezpośrednio do pojemnika z systemem Jenkins, ale nie będzie miał dostępu do konta roota ,sudo
,vi
i wiele poleceń nie są dostępne i dlatego obejście jest potrzebne.Służy
kubectl describe pod [...]
do znajdowania węzła uruchamiającego zasobnik i identyfikatora kontenera(docker://...)
SSH
do węzładocker exec -ti -u root -- /bin/bash
aby uzyskać dostęp do kontenera z uprawnieniami rootowaniaapt-get update
sudo apt-get install vim
Druga różnica polega na tym, że plik konfiguracyjny Jenkins jest umieszczony w innej ścieżce, która odpowiada punktowi montowania trwałego woluminu, tj.
/var/jenkins_home
Ta lokalizacja może ulec zmianie w przyszłości, sprawdź, czy jest uruchomionydf
.Następnie wyłącz zabezpieczenia - zmień w
/var/jenkins_home/jenkins/config.xml
pliku wartość true na false .Teraz wystarczy zrestartować Jenkins, akcję, która spowoduje, że pojemnik i kapsuła zginą, utworzy się ponownie w ciągu kilku sekund ze zaktualizowaną konfiguracją (i całą szansą, jak vi, aktualizacja skasowana) dzięki stałemu woluminowi.
Całe rozwiązanie zostało przetestowane na Google Kubernetes Engine. AKTUALIZACJA Zauważ, że równie dobrze możesz uruchomić
ps -aux
hasło w postaci zwykłego tekstu, nawet bez dostępu użytkownika root.źródło
Wiele razy nie będziesz mieć uprawnień do edycji pliku config.xml.
Najprostszą rzeczą byłoby wycofanie się
config.xml
i usunięcie za pomocą polecenia sudo.Uruchom ponownie jenkinsa za pomocą polecenia
sudo /etc/init.d/jenkins restart
Spowoduje to wyłączenie wszystkich zabezpieczeń w Jenkins, a opcja logowania zniknie
źródło
Za pomocą bcrypt możesz rozwiązać ten problem. Rozszerzenie odpowiedzi @Reem dla kogoś, kto próbuje zautomatyzować proces za pomocą bash i python.
Hasło zostało tutaj zapisane na stałe, ale może być wprowadzane przez użytkownika w zależności od wymagań. Pamiętaj też, aby dodać, że w
sleep
przeciwnym razie każde inne polecenie dotyczące Jenkins zawiedzie.źródło
Aby po prostu wyłączyć zarówno zabezpieczenia, jak i kreatora uruchamiania, użyj właściwości JAVA:
Zaletą tego jest to, że możesz użyć go w obrazie Docker, dzięki czemu Twój kontener zawsze uruchomi się natychmiast bez ekranu logowania:
Zwróć uwagę, że jak wspomnieli inni, plik config.xml w Jenkins znajduje się w
/var/jenkins_home
obrazie, ale użycie gosed
do modyfikacji z pliku Docker nie powiedzie się, ponieważ (prawdopodobnie) plik config.xml nie istnieje do momentu uruchomienia serwera.źródło
Miałem podobny problem i po odpowiedzi ArtB
Odkryłem, że mój użytkownik nie miał odpowiednich konfiguracji. więc co zrobiłem:
Uwaga: ręczne modyfikowanie takich plików XML jest ryzykowne. Zrób to na własne ryzyko. Ponieważ byłem już zamknięty, nie miałem wiele do stracenia. AFAIK W najgorszym przypadku usunąłbym plik ~ / .jenkins / config.xml jak wspomniano wcześniej.
**> 1. ssh do maszyny Jenkins
pod
Dodaj:
Teraz możesz iść w różne strony. Na przykład miałem integrację z github oauth, więc mogłem spróbować zastąpić strategię autoryzacji czymś takim jak poniżej:
Uwaga: działało w moim przypadku, ponieważ miałem już skonfigurowaną wtyczkę github oauth. Jest to więc bardziej ryzykowne niż poprzednie rozwiązanie.
źródło
Edytuj plik $ JENKINS_HOME / config.xml i zmień konfigurację zabezpieczeń za pomocą:
Po tym zrestartuj Jenkins.
źródło
Dla tych, którzy używają macOS, nową wersję można po prostu zainstalować przez Homebrew. więc do odpoczynku ten wiersz poleceń musi używać:
źródło