Administración de claves SSH dentro de Jenkins para Git


Estoy tratando de poner en marcha Jenkins con un repositorio alojado en GitHub (usando el plugin Git de Jenkins). El repositorio tiene varios submódulos de git, por lo que no estoy seguro de querer probar y administrar varias claves de implementación.

Mi cuenta de usuario personal de GitHub es un colaborador de cada uno de los proyectos que deseo incorporar con Jenkins, por lo que he generado una clave SSH dentro de /var/lib/jenkins/.ssh y la he añadido a mi cuenta personal de GitHub.

Sin embargo, cuando intento agregar la URL del repositorio a mi Jenkins configuración del proyecto, obtengo:

Failed to connect to repository : Command "git ls-remote -h [email protected]:***/***.git HEAD" returned status code 128:
stdout: 
stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly

Del mismo modo, cuando programo una compilación obtengo:

stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

También he intentado configurar un archivo de configuración SSH como se describe aquí, pero fue en vano.

¿Puede alguien arrojar alguna luz? Gracias

EDITAR

Debo añadir que estoy ejecutando CentOS 5.8

Author: David Birks, 2013-03-09

4 answers

Parece que el host github.com al que jenkins intenta conectarse no aparece en el $HOME/.ssh/known_hosts del usuario de Jenkins. Jenkins se ejecuta en la mayoría de distribuciones como el usuario jenkins y por lo tanto tiene su propio directorio .ssh para almacenar la lista de claves públicas y known_hosts.

La solución más fácil que se me ocurre para solucionar este problema es:

# Login as the jenkins user and specify shell explicity,
# since the default shell is /bin/false for most
# jenkins installations.
sudo su jenkins -s /bin/bash

cd SOME_TMP_DIR
# git clone YOUR_GITHUB_URL

# Allow adding the SSH host key to your known_hosts

# Exit from su
exit
 62
Author: Tuxdude,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-09 21:39:14

¿Ha intentado iniciar sesión como el usuario jenkins?

Prueba esto:

sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone [email protected]:your/repo.git

A menudo ves un fallo si el host no ha sido añadido o autorizado (por lo tanto, siempre inicio sesión manualmente como hudson/jenkins para la primera conexión a github/bitbucket), pero ese enlace que incluiste supuestamente soluciona eso.

Si lo anterior no funciona, intente volver a copiar la clave. Asegúrese de que es la clave pub (es decir, id_rsa.pub). ¿Tal vez te perdiste algunos personajes?

 6
Author: Adam Gent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-09 19:26:15

De acuerdo con este artículo , puede intentar el siguiente comando:

   ssh-add -l

Si su clave no está en la lista, entonces

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
 4
Author: RabitChang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-09 19:34:04

Esto funciona para mí si tiene config y el archivo de clave privada en el /Jenkins/.ssh / necesita chown (cambiar propietario) para estos 2 archivos y luego reiniciar jenkins para que la instancia de jenkins lea estos 2 archivos.

 1
Author: Jianhong,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-15 05:24:51