linux - recuperar - ¿Cómo restablecer la configuración de seguridad de Jenkins desde la línea de comando?
recuperar password jenkins (17)
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 montaje 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
.
<useSecurity>false</useSecurity>
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
[...]
¿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
?
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
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:
<passwordHash>#jbcrypt:$2a$10$3DzCGLQr2oYXtcot4o0rB.wYi5kth6e45tcPpRFsuYqzLZfn1pcWK</passwordHash>
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
Edite el archivo $ JENKINS_HOME / config.xml y cambie la configuración de seguridad con esto:
<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
Después de eso reinicia Jenkins.
El elemento <passwordHash>
en users/<username>/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 <passwordHash>
:
<passwordHash>bar:7f128793bc057556756f4195fb72cdc5bd8c5a74dee655a6bfb59b4a4c4f4349</passwordHash>
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
<useSecurity>true</useSecurity>
con<useSecurity>false</useSecurity>
Eliminar
<authorizationStrategy>
y<securityRealm>
Guárdelo y reinicie jenkins ( reinicio de jenkins del servicio sudo )
Encontré el archivo en cuestión ubicado en / var / lib / jenkins llamado config.xml, que modificó el problema.
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.
<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>
La solución más simple es deshabilitar completamente la seguridad: cambie true
a false
en el archivo /var/lib/jenkins/config.xml
.
<useSecurity>true</useSecurity>
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 :
<passwordHash>#jbcrypt:$2a$10$razd3L1aXndFfBNHO95aj.IVrFydsxkcQCcLmujmFQzll3hcUrY7S</passwordHash>
Una vez que haya hecho esto, solo reinicie Jenkins e inicie sesión usando esta contraseña:
test
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 .
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
<useSecurity>true</useSecurity>
A,
<useSecurity>false</useSecurity>
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):
- En
config.xml
, establezcadisableSignup
enfalse
. - Reinicia Jenkins.
- Vaya a la página web de Jenkins e inscríbase con un nuevo usuario .
- En
config.xml
, duplique una de las<permission>hudson.model.Hudson.Administer:username</permission>
y reemplace elusername
con el nuevo usuario. - Si se trata de un servidor privado, configure
disableSignup
entrue
enconfig.xml
. - Reinicia Jenkins.
- Vaya a la página web de Jenkins e inicie sesión como el nuevo usuario .
- Restablece la contraseña del usuario original.
- Inicie sesión como el usuario original.
Limpieza opcional:
- Eliminar el nuevo usuario.
- Elimine la línea temporal de
<permission>
enconfig.xml
.
No se dañaron valores durante esta respuesta.
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/<useSecurity>true/<useSecurity>false/'' ~/config.xml
Luego haz clic en Build Now y reinicia Jenkins (¡o el servidor si es necesario!)
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
- cd ~ / .jenkins (supongo que algunas instalaciones lo ponen bajo /var/lib/jenkins/config.xml, pero no en mi caso)
- 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")
- reiniciar jenkins. en mi caso como root service tomcat7 stop; ; servicio tomcat7 start
- Intenta ingresar de nuevo. (trabajó para mi)**
debajo
añadir:
<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>
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.
<authorizationStrategy class="org.jenkinsci.plugins.GithubAuthorizationStrategy" plugin="[email protected]">
<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>
cambiar <useSecurity>true</useSecurity>
a <useSecurity>false</useSecurity>
no será suficiente, también debe eliminar los elementos <authorizationStrategy>
y <securityRealm>
y reiniciar su servidor jenkins haciendo el sudo service jenkins restart
.
recuerde esto, establezca <usesecurity>
en false
solo puede causarle un problema, ya que estas instrucciones se mencionan en su documentación oficial aquí .
/.jenkins/secrets/initialAdminPassword
Copie la contraseña del archivo inicialAdminPassword y péguelo en Jenkins.