235 votes

Ligne de commande de réinitialisation de la configuration de Jenkins

Existe-t-il un moyen de tout réinitialiser (ou juste de désactiver les paramètres de sécurité) à partir de la ligne de commande sans utilisateur/mot de passe car j'ai réussi à me bloquer complètement hors de Jenkins ?

303voto

Nowaker Points 2449

La solution la plus simple est de désactiver complètement la sécurité - changez true à false sur /var/lib/jenkins/config.xml fichier.

<useSecurity>true</useSecurity>

Ensuite, il suffit de redémarrer Jenkins, d'aller dans le panneau d'administration et de tout régler à nouveau.

3 votes

J'ai dû redémarrer Jenkins pour que le changement s'applique.

12 votes

sudo service jenkins restart

11 votes

Pour ceux qui ne le trouvent pas dans leur config.xml, utilisez find / -name "config.xml" dans votre terminal.

197voto

aruseni Points 1629

Une autre façon serait de modifier manuellement le fichier de configuration de votre utilisateur (par exemple, /var/lib/jenkins/users/username/config.xml) et de mettre à jour le contenu du fichier passwordHash :

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

Une fois que vous avez fait cela, il suffit de redémarrer Jenkins et de se connecter en utilisant ce mot de passe :

test

1 votes

Et si cette entrée n'est pas là - où la mettre ?

3 votes

Le site <passwordHash> La balise xml est un enfant de <hudson.security.HudsonPrivateSecurityRealm_-Details> . Regardez l'utilisateur admin par défaut pour avoir une idée de la structure totale du XML.

3 votes

C'est une bonne solution qui permet de sécuriser l'installation. Par curiosité, comment génère-t-on le hachage du mot de passe ?

45voto

ryanzec Points 4263

J'ai trouvé le fichier en question situé dans /var/lib/jenkins appelé config.xml, le modifier a réglé le problème.

1 votes

J'utilise El-Capitan et le fichier config.xml n'a pas été trouvé à l'emplacement suivant

0 votes

@DuraiAmuthan.H L'avez-vous installé avec la pile bitnami ? Le fichier de configuration doit être dans /Applications/jenkins-2.19.3-0/apps/jenkins/jenkins_home/use‌​rs/admin/config.xml

0 votes

@ryanzec, La réponse de Nowakers utilise le même fichier mais elle est mieux expliquée, vous devriez envisager de l'accepter comme la réponse correcte.

45voto

uckelman Points 7228

Le site <passwordHash> élément dans users/<username>/config.xml acceptera des données au 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 hachis et mettez-le avec le sel dans <passwordHash> :

<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>

Redémarrez Jenkins, puis essayez de vous connecter avec le mot de passe foo . Puis réinitialisez votre mot de passe avec quelque chose d'autre. (Jenkins utilise bcrypt par défaut, et un tour de SHA256 n'est pas un moyen sûr de stocker des mots de passe. Vous obtiendrez un hachage bcrypt stocké lorsque vous réinitialiserez votre mot de passe).

1 votes

Cela ne semble pas fonctionner. Un exemple commence avec un sel de #jbscrypt et définit ensuite des champs de cryptage $2a$10$. Que signifient-ils ?

0 votes

Ma réponse a fonctionné pour moi. Les champs supplémentaires que vous voyez sont pour un format de hachage différent. La bibliothèque utilisée par Jenkins pour gérer les mots de passe hachés prend en charge plusieurs formats. Le format jbcrypt auquel vous faites référence est plus sûr que sha256 avec un sel, mais le format sha256+sel peut être facilement produit à partir de la ligne de commande - rappelez-vous que le but de l'exercice est de revenir dans Jenkins, puis de changer le mot de passe à partir de l'interface web de Jenkins.

0 votes

Cela n'a pas non plus fonctionné pour moi. Je vais essayer de trouver plus d'informations sur bcrypt.

19voto

user637338 Points 181

La réponse sur la modification était correcte. Pourtant, je pense qu'il faut mentionner que /var/lib/jenkins/config.xml ressemble à ceci si vous avez activé la "Stratégie d'autorisation de la matrice basée sur le projet". Suppression de /var/lib/jenkins/config.xml et le redémarrage de Jenkins fait également l'affaire. J'ai également supprimé les utilisateurs dans /var/lib/jenkins/users pour repartir 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>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X