Comment réinitialiser les paramètres de sécurité Jenkins à partir de la ligne de commande?
19 réponses
la solution la plus simple consiste à désactiver complètement la sécurité - remplacer true
par false
dans le fichier /var/lib/jenkins/config.xml
.
<useSecurity>true</useSecurity>
puis redémarrez Jenkins, par
sudo service jenkins restart
puis allez dans le panneau d'administration et réglez tout à nouveau.
Une autre façon serait de modifier manuellement le fichier de configuration pour l'utilisateur (par exemple, /var/lib/jenkins/utilisateurs/nom d'utilisateur/config.xml) et mettre à jour le contenu de passwordHash :
<passwordHash>#jbcrypt:a$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
une fois que vous avez fait cela, redémarrez Jenkins et connectez-vous en utilisant ce mot de passe:
test
j'ai trouvé le fichier en question dans /var/lib/jenkins appelé config.xml, la modification qui a résolu le problème.
l'élément <passwordHash>
dans users/<username>/config.xml
acceptera les données du format
salt:sha256("password{salt}")
donc, si votre sel est bar
et votre mot de passe est foo
alors vous pouvez produire le SHA256 comme ceci:
echo -n 'foo{bar}' | sha256sum
Vous devriez obtenir 7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349
comme résultat. Prenez le hash et mettez-le avec le sel dans <passwordHash>
:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
redémarrez Jenkins, puis essayez de vous connecter avec mot de passe foo
. Puis réinitialiser votre mot de passe à autre chose. (Jenkins utilise bcrypt par défaut, et un tour de SHA256 n'est pas une façon sûre de stocker les mots de passe. Vous obtiendrez un hachage bcrypt stocké lorsque vous réinitialiserez votre mot de passe.)
El Capitan config.xml ne peut pas être trouvé à
/ var / lib / jenkins /
à Sa disposition
~/.jenkins 151970920"
ensuite, comme d'autres mentionnés, ouvrez la configuration .xml de fichiers et d'apporter les modifications suivantes
-
remplacer
<useSecurity>true</useSecurity>
avec<useSecurity>false</useSecurity>
-
Supprimer
<authorizationStrategy>
et<securityRealm>
-
Enregistrer et redémarrer le jenkins( sudo service jenkins redémarrer )
la réponse sur la modification était correcte. Pourtant, je pense qu'il faut mentionner que /var/lib/jenkins/config.xml
ressemble à cela si vous avez activé "Project-based Matrix Authorization Strategy". Supprimer /var/lib/jenkins/config.xml
et redémarrer jenkins fait aussi l'affaire. J'ai également supprimé les utilisateurs dans /var/lib/jenkins/users
pour commencer à partir de zéro.
<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>
pour le réinitialiser sans désactiver la sécurité si vous utilisez des permissions matricielles (probablement facilement adaptables à d'autres méthodes de connexion):
- Dans
config.xml
,disableSignup
àfalse
. - Redémarrer Jenkins.
- allez à la page Web de Jenkins et inscrivez-vous avec un nouvel utilisateur .
- dans
config.xml
, dupliquer une des lignes<permission>hudson.model.Hudson.Administer:username</permission>
et remplacerusername
par le nouvel utilisateur. - si c'est un serveur privé, mettez
disableSignup
retour àtrue
dansconfig.xml
. - Redémarrer Jenkins.
- aller à la page Web de Jenkins et se connecter comme le nouvel utilisateur .
- réinitialise le mot de passe de l'utilisateur original.
- se Connecter comme l'utilisateur d'origine.
Option de nettoyage:
- Supprimer le nouvel utilisateur.
- supprimer la ligne temporaire
<permission>
dansconfig.xml
.
aucun titre n'a été lésé au cours de cette réponse.
pour désactiver la sécurité Jenkins par étapes simples dans Linux, exécutez ces commandes:
sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml
sudo /etc/init.d/jenkins restart
il supprimera les lignes useSecurity
et authorizationStrategy
de votre fichier de configuration racine config.xml
et redémarrera votre Jenkins.
Voir aussi: Désactiver la sécurité à Jenkins site
après avoir obtenu l'accès à Jenkins, vous pouvez réactiver la sécurité dans votre Configurer la page "Sécurité globale En choisissant la page contrôle D'accès/domaine de la sécurité . Après que n'oubliez pas de créer l'utilisateur administrateur .
sur le offchance vous vous bloquez accidentellement hors de Jenkins en raison d'une erreur de permission, et vous n'avez pas d'accès côté serveur pour passer à l'utilisateur ou à la racine de jenkins... Vous pouvez faire un travail dans Jenkins et ajouter ceci au script Shell:
sed -i 's/<useSecurity>true/<useSecurity>false/' ~/config.xml
puis cliquez sur Build Now et redémarrez Jenkins (ou le serveur si vous en avez besoin!)
\.jenkins\secrets\initialAdminPassword
Copiez le mot de passe du fichier initial et collez-le dans les Jenkins.
afin de supprimer la sécurité par défaut pour jenkins dans Windows OS,
vous pouvez parcourir le fichier de configuration.xml créé dans /utilisateurs/{UserName}/.Jenkins.
dans ce fichier vous pouvez changer le code de
<useSecurity>true</useSecurity>
à,
<useSecurity>false</useSecurity>
changer le <useSecurity>true</useSecurity>
en <useSecurity>false</useSecurity>
ne sera pas suffisant, vous devriez supprimer <authorizationStrategy>
et <securityRealm>
éléments trop et redémarrer votre serveur jenkins en faisant sudo service jenkins restart
.
rappelez-vous ceci, mettez <usesecurity>
à false
seulement peut causer un problème pour vous, puisque ces instructions sont mentionnées dans la documentation officielle ici .
la manière simple de sortir de ceci est d'utiliser le psw administrateur pour se connecter avec votre utilisateur administrateur:
- changer pour root user:
sudo su -
- copier le mot de passe:
xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
- connectez-vous avec l'administrateur et appuyez sur
ctrl + v
sur la boîte de saisie du mot de passe.
installez xclip si vous ne l'avez pas:
-
$ sudo apt-get install xclip
Jenkins over KUBENETES and Docker
dans le cas de Jenkins sur un conteneur géré par un Kubernetes POD est un peu plus complexe depuis: kubectl exec PODID --namespace=jenkins -it -- /bin/bash
voulez-vous permettre d'accéder directement au conteneur courant Jenkins, mais vous n'aurez pas d'accès racine , sudo
, vi
et beaucoup de commandes ne sont pas disponibles et donc une solution est nécessaire.
utilisez kubectl describe pod [...]
pour trouver le noeud qui exécute votre Pod et le conteneur ID (docker://...)
-
SSH
dans le noeud - exécuter
docker exec -ti -u root -- /bin/bash
pour accéder au conteneur avec les privilèges " Root -
apt-get update
-
sudo apt-get install vim
la seconde différence est que la configuration de Jenkins fichier sont placés dans un chemin différent qui correspond au point de montage du volume persistant, i.e. /var/jenkins_home
, cet emplacement pourrait changer dans le futur, Vérifiez qu'il en cours d'exécution df
.
puis désactiver la sécurité - changer vrai à faux dans le fichier /var/jenkins_home/jenkins/config.xml
.
<useSecurity>false</useSecurity>
maintenant il suffit de redémarrer le Jenkins, action qui causera la mort du container et du Pod, il sera créé à nouveau en quelques secondes avec la configuration mise à jour (et toutes les chances comme vi, mise à jour effacée) grâce au volume persistant.
l'ensemble de la solution a été testé sur Google Kubernetes Engine.
UPDATE
Notez que vous pouvez aussi bien lancer ps -aux
le mot de passe en texte clair est affiché même sans accès root.
jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux
[...]
jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin
[...]
1 Vérifiez d'abord l'emplacement si vous installez war ou Linux ou windows basé sur ce
par exemple si la guerre sous Linux et pour l'utilisateur administrateur
/home/"User_NAME"/.jenkins/users/admin / config.xml
passez à cette balise après #jbcrypt:
<passwordHash>#jbcrypt:aDzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
modifier ce mot de passe en utilisant utiliser n'importe quel site web pour générateur de hachage bcrypt
https://www.dailycred.com/article/bcrypt-calculator
assurez-vous qu'il commencez avec $2a cause ce un jenkens utilise
nous pouvons réinitialiser le mot de passe tout en laissant la sécurité allumée.
La config.fichier xml dans / var/lib/Jenkins/users/ admin /agit en quelque sorte comme le fichier/etc / shadow Linux ou les systèmes de type UNIX ou le fichier SAM dans Windows, dans le sens où il stocke le hachage du mot de passe du compte.
si vous devez réinitialiser le mot de passe sans vous connecter, vous pouvez éditer ce fichier et remplacer l'ancien hachage par un nouveau généré à partir de bcrypt:
$ pip install bcrypt
$ python
>>> import bcrypt
>>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a"))
'YOUR_HASH'
cela affichera votre hash, avec le préfixe 2a, le préfixe correct pour les hash Jenkins.
maintenant, éditez la config.fichier xml:
...
<passwordHash>#jbcrypt:REPLACE_THIS</passwordHash>
...
une fois que vous avez inséré le nouveau hachage, réinitialisez Jenkins:
(si vous êtes sur un système avec systemd):
sudo systemctl restart Jenkins
vous pouvez maintenant vous connecter, et vous n'avez pas laissé votre système ouvert une seconde.
étape 1 : allez dans le répertoire du cd .jenkins / secrets vous obtiendrez alors un "mot d'ordre initial".
step-2: nano initialAdminPassword
vous obtiendrez un mot de passe
j'ai eu un problème similaire, et à la suite de la réponse de ArtB,
j'ai trouvé que mon utilisateur n'avait pas les configurations appropriées. alors ce que j'ai fait:
Note: modifier manuellement de tels fichiers XML est risqué. Le faire à vos propres risques. Comme j'étais déjà enfermé, je n'avais pas grand chose à perdre. Dans le pire des cas, j'aurais supprimé le ~/.jenkins / config.fichier xml comme pré-post mentionné.
* * > 1. ssh à l' jenkins machine
- cd ~/.jenkins (je suppose que certaines des installations de la mettre sous /var/lib/jenkins/config.xml, mais pas dans mon cas )
- vi config.xml, et sous la balise authorizationStrategy xml, ajouter la section ci-dessous (vient d'utiliser mon nom d'utilisateur au lieu de "put-your-username")
- redémarrez jenkins. dans mon cas, en tant que root service tomcat7 arrêter; ; service tomcat7 démarrer
- essayez de connectez-vous à nouveau. (a travaillé pour moi)**
en vertu de
ajouter:
<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>
Maintenant, vous pouvez aller dans différentes directions. Par exemple, j'ai eu l'intégration de githuboauth, donc j'aurais pu essayer de remplacer la stratégie d'autorisation par quelque chose comme ci-dessous:
Note:, cela a fonctionné dans mon cas car j'avais un plugin spécifique github oauth qui était déjà configuré. Donc, il est plus risqué que la solution précédente.
<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>
édite le fichier $ JENKINS_HOME / config.xml et modifier la configuration de sécurité avec ceci:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
après avoir redémarré Jenkins.