tag - que es un repositorio git
Jenkins: no se pudo conectar al repositorio (11)
Estoy tratando de conectar jenkins en un repositorio github.
Cuando especifico la URL de Repo jenkins devuelve el siguiente mensaje de error:
Error al conectarse al repositorio: Comando "git ls-remote -h [email protected]: adolfosrs / jenkins-test.git HEAD" devolvió el código de estado 128: stdout: stderr: Error al verificar la clave del host. fatal: no se pudo leer desde el repositorio remoto. Por favor, asegúrese de tener los derechos de acceso correctos y existe el repositorio.
Al usar HTTPS: // Url jenkins devuelve:
Error al conectarse al repositorio: no se pudo conectar a https://github.com/adolfosrs/jenkins-test.git (estado = 407)
Pude clonar exitosamente el repositorio en la misma máquina donde está corriendo jenkins y también ejecuto el git ls-remote -h [email protected]:adolfosrs/jenkins-test.git HEAD
. Así que tengo el SSH correcto en github.
Asegúrese de que la clave de host RSA y la IP del servidor bitbucket se agreguen al archivo ''hosts conocidos''. Los contenidos deben verse como
bitbucket.org,xx.xx.xx.xx ssh-rsa host_key
Recuerde cambiar la propiedad de Jenkins por todos los archivos en /var/lib/jenkins/.ssh/
El problema fue que de alguna manera creé los archivos ssh con el usuario raíz. Entonces, el propietario de los archivos era root.
La solución fue simplemente cambiar la propiedad del usuario de jenkins.
chown jenkins id_rsa.pub
chown jenkins id_rsa
En Ubuntu, colocó sus archivos id_rsa
e id_rsa.pub
en /var/lib/jenkins/.ssh
Haz que Jenkins los posea sudo chown -R jenkins /var/lib/jenkins/.ssh/
Asegúrese de que la clave Jenkins se agrega como clave de implementación con acceso RW en GitHub (o similar) - use la clave id_rsa.pub
para esto.
Ahora todo debería coincidir con el complemento SCM Sync.
En mi caso, edité el archivo known_hosts con usuario root. Así que cambió la propiedad del archivo a root y el usuario de jenkins comenzó a lanzar "[email protected]: xxxxxx / xxxx.git HEAD" devolvió el código de estado 128: stdout: stderr: Verificación de clave de host falló "error al clonar la imagen de git. Revertir la propiedad resolvió el problema
En nuestro caso, se tuvo que instalar git
en el servidor de Jenkins.
Este es un tema muy complicado, incluso si está familiarizado con el funcionamiento de las cosas en https con certificados (OTOH si ve mi solución, parece muy lógico :)
Si desea conectarse a un repositorio de GIT a través de http (s) desde el shell, asegúrese de tener el certificado público almacenado (como archivo) en su máquina. Luego, agregarías ese certificado a tu configuración de GIT
git config [--global] http.sslCAInfo "certificado"
(reemplace "certificado" con la ruta completa / nombre del archivo PEM :)
Para el uso del intérprete de órdenes, también podría suministrar un ''.netrc'' que proporcione sus credenciales para el inicio de sesión del servidor http. Una vez hecho esto, podrá hacer un ''git clone https: // ...'' sin ningún suministro interactivo de credenciales.
Sin embargo, para el servicio de Jenkins es un poco diferente ... Aquí, el proceso de jenkins necesita estar al tanto del certificado del servidor, y no usa la configuración del shell (en el sentido del archivo de configuración global de git ''.gitconfig '') :PAG
Lo que necesitaba hacer es agregar otro parámetro a las opciones de inicio de Jenkins.
... -Djavax.net.ssl.trustStore = "keystore" ...
(reemplace "keystore" con la ruta completa / nombre como se explica a continuación :)
Ahora copie el archivo de almacén de claves de su servidor web que contiene el certificado a alguna ruta (sé que esto es un hack sucio y no exactamente seguro :) y refiérase a él con el parámetro ''-Djavax.net.ssl.trustStore =''.
Ahora el servicio de Jenkins aceptará el certificado del servidor web que proporciona el repositorio a través de https. Configure el URL del repositorio de GIT como
Tenga en cuenta que aún necesita el ''.netrc'' en la carpeta de inicio del usuario jenkins para el inicio de sesión. Por lo tanto, lo que describo debe ser visto como una solución temporal ... hasta que se proporcione un plugin de ayuda credencial que funcione correctamente. En mi humilde opinión, este complemento (en su versión actual 1.9.4) tiene errores.
Nunca pude obtener las credenciales-ayudantes para trabajar de Jenkins, sin importar lo que intenté :( En el mejor de los casos, pude ver algunos errores sobre el archivo auxiliar de credenciales temporales no accesible, etc. Puedes ver muchos errores reportados sobre esto en Jenkins JIRA, pero no hay solución.
Entonces, si alguien lo hizo funcionar bien, por favor, comparta el conocimiento ...
PD: usando los complementos de Jenkins en las siguientes versiones:
Complemento de credenciales 1.9.4, complemento de cliente GIT 1.6.1, plugin Jenkins GIT 2.0.1
Jenkins se ejecuta como otro usuario, no como su inicio de sesión normal. Entonces, haz esto para resolver el problema ssh:
- Inicie sesión como jenkins
su jenkins
(primero debe hacersudo passwd jenkins
para poder establecer la contraseña de jenkins. No pude encontrar el valor predeterminado ...) - Generar par de claves
ssh-keygen
:ssh-keygen
- Copie la clave pública (
id_rsa.pub
) en su cuenta github (o donde sea) - Clone el repositorio como jenkins para agregar el host a los jenkins
known_hosts
cual es necesario. Ahora puede eliminar el repositorio clonado nuevamente si lo desea.
No se menciona aquí hasta ahora, pero esto también puede provenir del alijo. Nos encontramos con el mismo problema, la causa de nuestro problema fue que la instancia de stash que utilizamos para jenkins se bloqueó. Reiniciar el alijo lo resolvió en nuestro caso.
Permítanme agregar aquí que un problema menor que podría generar este tipo de error es la falta de la extensión .git
en la URL del repositorio. Asegúrese de ingresar la URL completa que termina con .git
. Yo uso bitbucket así que lo que hago es hacer clic en "clonar" y la URL completamente calificada se genera automáticamente para mí. Hay un enfoque similar con github.
Tuve exactamente el mismo problema. La forma en que lo resolví en Mac es esta:
- Cambiar al usuario de jenkins (sudo -iu jenkins)
- Ejecutar: ssh-keygen (Nota: Ahora está creando pares de claves ssh para el usuario de jenkins. Debería ver algo como esto: Ingrese el archivo en el que desea guardar la clave (/Users/Shared/Jenkins/.ssh/id_rsa):
- Sigue presionando Enter para obtener el valor predeterminado hasta el final
- Ejecute el comando que se muestra en el mensaje de error de Jenkins, en su terminal (por ejemplo: "git ls-remote -h [email protected]: adolfosrs / jenkins-test.git HEAD")
- Se le preguntará si desea continuar. Decir que sí
- El repositorio Github se agregará a su archivo known_hosts en: /Users/Shared/Jenkins/.ssh/
- Vuelve al portal de Jenkins y prueba tu URL de Github SSH
- Deberia de funcionar. Buena suerte
Verifique con la configuración a continuación. Eso siempre me funciona.
Configuración de Jenkins:
1) Verificar si el ejecutable git está apropiadamente especificado
2) Proporcionar enlace de repositorio SSH git @ blahblah
3) Debajo de las credenciales >> Seleccione el nombre de usuario y la clave de autenticación (vaya a su servidor, genere claves SSH ssh-keygen ... Copie las claves a JENKINS_HOME /, ssh) Debería poder conectarse a su repositorio GIT desde Jenkins