¿Cómo restablecer la configuración de seguridad de Jenkins desde la línea de comando?

¿Hay alguna manera de restablecer todo (o simplemente desactivar la configuración de seguridad) desde la línea de comandos sin un usuario / contraseña, ya que he logrado bloquearme por completo de Jenkins ?

La solución más simple es deshabilitar completamente la seguridad: cambie true a false en el archivo /var/lib/jenkins/config.xml .

 true 

Entonces solo reinicia Jenkins, por

 sudo service jenkins restart 

Y luego vaya al panel de administración y configure todo una vez más.

Otra forma sería editar manualmente el archivo de configuración para su usuario (por ejemplo, /var/lib/jenkins/users/username/config.xml) y actualizar el contenido de passwordHash :

 #jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S 

Una vez que haya hecho esto, solo reinicie Jenkins e inicie sesión usando esta contraseña:

 test 

Encontré el archivo en cuestión ubicado en / var / lib / jenkins llamado config.xml, que modificó el problema.

El elemento en users//config.xml aceptará datos del formato

 salt:sha256("password{salt}") 

Entonces, si su sal es bar y su contraseña es foo entonces puede producir el SHA256 de esta manera:

 echo -n 'foo{bar}' | sha256sum 

Debería obtener 7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349 como resultado. Toma el hash y ponlo con la sal en :

 bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349 

Reinicia Jenkins, luego intenta iniciar sesión con la contraseña foo . Luego restablece tu contraseña a otra cosa. (Jenkins usa bcrypt de forma predeterminada, y una ronda de SHA256 no es una forma segura de almacenar contraseñas. Obtendrá un hash bcrypt almacenado cuando restablezca su contraseña).

En El-Capitan, config.xml no se puede encontrar en

/ var / lib / jenkins /

Está disponible en

~ / .jenkins

Luego, después de eso, como otros mencionaron, abra el archivo config.xml y realice los siguientes cambios

  • En esto, reemplace true con false

  • Eliminar y

  • Guárdelo y reinicie jenkins ( reinicio de jenkins del servicio sudo )

La respuesta sobre la modificación fue correcta. Sin embargo, creo que debería mencionarse que /var/lib/jenkins/config.xml tiene un aspecto similar si activó la “Estrategia de autorización de matriz basada en proyectos”. Eliminar /var/lib/jenkins/config.xml y reiniciar jenkins también funciona. También borré los usuarios en /var/lib/jenkins/users para comenzar desde cero.

  hudson.model.Computer.Configure:jenkins-admin hudson.model.Computer.Connect:jenkins-admin hudson.model.Computer.Create:jenkins-admin hudson.model.Computer.Delete:jenkins-admin hudson.model.Computer.Disconnect:jenkins-admin  hudson.model.Hudson.Administer:jenkins-admin hudson.model.Hudson.Read:jenkins-admin hudson.model.Hudson.RunScripts:jenkins-admin hudson.model.Item.Build:jenkins-admin hudson.model.Item.Cancel:jenkins-admin hudson.model.Item.Configure:jenkins-admin hudson.model.Item.Create:jenkins-admin hudson.model.Item.Delete:jenkins-admin hudson.model.Item.Discover:jenkins-admin hudson.model.Item.Read:jenkins-admin hudson.model.Item.Workspace:jenkins-admin hudson.model.View.Configure:jenkins-admin hudson.model.View.Create:jenkins-admin hudson.model.View.Delete:jenkins-admin hudson.model.View.Read:jenkins-admin  

Para restablecerlo sin deshabilitar la seguridad si está usando permisos de matriz (probablemente fácilmente adaptable a otros métodos de inicio de sesión):

  1. En config.xml , establezca disableSignup en false .
  2. Reinicia Jenkins.
  3. Vaya a la página web de Jenkins e inscríbase con un nuevo usuario .
  4. En config.xml , duplique una de las hudson.model.Hudson.Administer:username y reemplace el username con el nuevo usuario.
  5. Si se trata de un servidor privado, configure disableSignup en true en config.xml .
  6. Reinicia Jenkins.
  7. Vaya a la página web de Jenkins e inicie sesión como el nuevo usuario .
  8. Restablece la contraseña del usuario original.
  9. Inicie sesión como el usuario original.

Limpieza opcional:

  1. Eliminar el nuevo usuario.
  2. Elimine la línea temporal de en config.xml .

No se dañaron valores durante esta respuesta.

Para desactivar la seguridad de Jenkins en pasos simples en Linux, ejecute estos comandos:

 sudo ex +g/useSecurity/d +g/authorizationStrategy/d -scwq /var/lib/jenkins/config.xml sudo /etc/init.d/jenkins restart 

Eliminará useSecurity y authorizationStrategy lines de tu archivo config.xml root config y reiniciará tu Jenkins.

Ver también: Deshabilitar la seguridad en el sitio web de Jenkins


Después de obtener acceso a Jenkins, puede volver a habilitar la seguridad en su página Configurar seguridad global eligiendo el Control de acceso / Reino de seguridad . Después de eso, no olvides crear el usuario administrador .

Por casualidad, accidentalmente se bloquea de Jenkins debido a un error de permiso, y no tiene acceso al lado del servidor para cambiar al usuario o raíz de jenkins … Puede hacer un trabajo en Jenkins y agregarlo al script de Shell:

 sed -i 's/true/false/' ~/config.xml 

Luego haz clic en Build Now y reinicia Jenkins (¡o el servidor si es necesario!)

 \.jenkins\secrets\initialAdminPassword 

Copie la contraseña del archivo inicialAdminPassword y péguelo en Jenkins.

Para eliminar la seguridad predeterminada de jenkins en el sistema operativo Windows,

Puede recorrer el archivo Config.xml creado dentro de /users/{UserName}/.jenkins.

Dentro de este archivo puede cambiar el código de

 true 

A,

 false 

cambiar true a false no será suficiente, también debe eliminar los elementos y y reiniciar su servidor jenkins haciendo el sudo service jenkins restart .

recuerde esto, establezca en false solo puede causarle un problema, ya que estas instrucciones se mencionan en su documentación oficial aquí .

Una manera fácil de salir de esto es usar admin psw para iniciar sesión con su usuario administrador:

  • Cambiar a usuario root: sudo su -
  • Copie la contraseña: xclip -sel clip < /var/lib/jenkins/secrets/initialAdminPassword
  • Inicie sesión con admin y presione ctrl + v en el cuadro de entrada de contraseña.

Instala xclip si no lo tienes:

  • $ sudo apt-get install xclip

Jenkins sobre KUBENETES y Docker

En el caso de Jenkins, un contenedor gestionado por Kubernetes POD es un poco más complejo ya que: kubectl exec PODID --namespace=jenkins -it -- /bin/bash le permitirá acceder directamente al contenedor que ejecuta Jenkins, pero lo hará no tiene acceso de root , sudo , vi y muchos comandos no están disponibles y, por lo tanto, se necesita una solución alternativa.

Use kubectl describe pod [...] para encontrar el nodo que ejecuta su Pod y la ID del contenedor (docker://...)

  • SSH en el nodo
  • ejecutar docker exec -ti -u root -- /bin/bash para acceder al contenedor con privilegios de Root
  • apt-get update
  • sudo apt-get install vim

La segunda diferencia es que el archivo de configuración de Jenkins se coloca en una ruta diferente que corresponde al punto de assembly del volumen persistente, es decir, /var/jenkins_home , esta ubicación podría cambiar en el futuro, /var/jenkins_home ejecutando df .

A continuación, deshabilite la seguridad: cambie verdadero a falso en el archivo /var/jenkins_home/jenkins/config.xml .

 false 

Ahora es suficiente reiniciar el Jenkins, acción que hará que el contenedor y el Pod se mueran, se creará de nuevo en unos segundos con la configuración actualizada (y todas las posibilidades como vi, actualización borrada) gracias al volumen persistente.

Toda la solución ha sido probada en Google Kubernetes Engine. ACTUALIZACIÓN Observe que también puede ejecutar ps -aux la contraseña en texto sin formato se muestra incluso sin acceso de root.

 jenkins@jenkins-87c47bbb8-g87nw:/$ps -aux [...] jenkins [..] -jar /usr/share/jenkins/jenkins.war --argumentsRealm.passwd.jenkins=password --argumentsRealm.roles.jenkins=admin [...] 

1 primer lugar de verificación si instala guerra o Linux o Windows basado en eso

por ejemplo, si la guerra en Linux y para el usuario administrador

/home/”User_NAME”/.jenkins/users/admin/config.xml

vaya a esta etiqueta después de #jbcrypt:

 #jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK 

cambie esta contraseña usando cualquier sitio web para generador de hash bcrypt

 https://www.dailycred.com/article/bcrypt-calculator 

asegúrese de que comience con $ 2a porque este utiliza jenkens

Podemos restablecer la contraseña mientras dejamos la seguridad activada.

El archivo config.xml en / var / lib / Jenkins / users / admin / acts se parece al archivo / etc / shadow Linux o sistemas tipo UNIX o al archivo SAM en Windows, en el sentido de que almacena el hash del contraseña de la cuenta

Si necesita restablecer la contraseña sin iniciar sesión, puede editar este archivo y reemplazar el antiguo hash por uno nuevo generado desde bcrypt:

 $ pip install bcrypt $ python >>> import bcrypt >>> bcrypt.hashpw("yourpassword", bcrypt.gensalt(rounds=10, prefix=b"2a")) 'YOUR_HASH' 

Esto generará su hash, con el prefijo 2a, el prefijo correcto para los hash de Jenkins.

Ahora, edite el archivo config.xml:

 ... #jbcrypt:REPLACE_THIS ... 

Una vez que insertes el nuevo hash, reinicia Jenkins:

(si está en un sistema con systemd):

 sudo systemctl restart Jenkins 

Ahora puede iniciar sesión y no dejó su sistema abierto por un segundo.

Tuve un problema similar y, tras la respuesta de ArtB,

Descubrí que mi usuario no tenía las configuraciones adecuadas. entonces lo que hice:

Nota: la modificación manual de dichos archivos XML es arriesgada. Hazlo bajo tu propio riesgo. Como ya estaba bloqueado, no tenía mucho que perder. AFAIK Peor caso, habría eliminado el archivo ~ / .jenkins / config.xml como entrada previa mencionada.

**> 1. ssh a la máquina jenkins

  1. cd ~ / .jenkins (supongo que algunas instalaciones lo ponen bajo /var/lib/jenkins/config.xml, pero no en mi caso)
  2. vi config.xml, y bajo la etiqueta authorizationStrategy xml, agregue la sección a continuación (solo use mi nombre de usuario en lugar de “put-your-username”)
  3. reiniciar jenkins. en mi caso como root service tomcat7 stop; ; servicio tomcat7 start
  4. Intenta ingresar de nuevo. (trabajó para mi)**

debajo

añadir:

 hudson.model.Computer.Build:put-your-username hudson.model.Computer.Configure:put-your-username hudson.model.Computer.Connect:put-your-username hudson.model.Computer.Create:put-your-username hudson.model.Computer.Delete:put-your-username hudson.model.Computer.Disconnect:put-your-username hudson.model.Hudson.Administer:put-your-username hudson.model.Hudson.ConfigureUpdateCenter:put-your-username hudson.model.Hudson.Read:put-your-username hudson.model.Hudson.RunScripts:put-your-username hudson.model.Hudson.UploadPlugins:put-your-username hudson.model.Item.Build:put-your-username hudson.model.Item.Cancel:put-your-username hudson.model.Item.Configure:put-your-username hudson.model.Item.Create:put-your-username hudson.model.Item.Delete:put-your-username hudson.model.Item.Discover:put-your-username hudson.model.Item.Read:put-your-username hudson.model.Item.Workspace:put-your-username hudson.model.Run.Delete:put-your-username hudson.model.Run.Update:put-your-username hudson.model.View.Configure:put-your-username hudson.model.View.Create:put-your-username hudson.model.View.Delete:put-your-username hudson.model.View.Read:put-your-username hudson.scm.SCM.Tag:put-your-username 

Ahora, puedes ir a diferentes direcciones. Por ejemplo, tuve la integración de github oauth, así que podría haber intentado reemplazar la estructura de autorización con algo como lo siguiente:

Nota: funcionó en mi caso porque tenía un plugin github oauth específico que ya estaba configurado. Por lo tanto, es más arriesgado que la solución anterior.

        put-your-username username2 username3 username_4_etc_put_username_that_will_become_administrator  true false false false   

Edite el archivo $ JENKINS_HOME / config.xml y cambie la configuración de seguridad con esto:

  

Después de eso reinicia Jenkins.

paso-1: ve al directorio cd .jenkins / secrets y obtendrás una ‘initialAdminPassword’.

paso-2: nano initialAdminPassword

obtendrás una contraseña