2012-04-19 25 views
20

estoy en EC2 con el Amazonas base de ami linux- He instalado Jenkins, pero cuando voy a tirar de la cesión temporal de github me da el siguiente error:Jenkins/Hudson no pueden conectarse al repo github

Building in workspace /var/lib/jenkins/workspace/build social 
Checkout:build social//var/lib/jenkins/workspace/build social - [email protected] 
Using strategy: Default 
Cloning the remote Git repository 
Cloning repository origin 
ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:adulion/.git 
hudson.plugins.git.GitException: Could not clone [email protected]:adulion/.git 
    at hudson.plugins.git.GitAPI.clone(GitAPI.java:245) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1117) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1059) 
    at hudson.FilePath.act(FilePath.java:832) 
    at hudson.FilePath.act(FilePath.java:814) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1059) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1218) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:581) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:470) 
    at hudson.model.Run.run(Run.java:1421) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:238) 
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:adulion/.git /var/lib/jenkins/workspace/build social" returned status code 128: 
stdout: Cloning into /var/lib/jenkins/workspace/build social... 

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

He generado una clave para el usuario actual que instaló jenkins y he logrado clonar el repositorio utilizando la línea de comandos de git pero jenkins no puede.

he copiado los archivos ~/.ssh en /var/lib/jenkins/.ssh

He añadido github a los hosts conocidos y me he quedado sin soluciones para probar. ¿Alguien sabe dónde me estoy equivocando? ¿Hay alguna manera de hacer que jenkins muestre la clave pública que está utilizando y puedo depurar si está usando la clave correcta?

I eliminado el nombre de la cesión temporal porque es un repo privada

Respuesta

29

Parece que el error fue: la verificación de la clave del host falló.

Usted debe iniciar sesión en su anfitrión Jenkins como el usuario Jenkins y ejecutar:

ssh [email protected] 

Luego responde afirmativamente a la pregunta acerca de la clave de host. Esto solo debe hacerse una vez.

Como alternativa, puede agregar "StrictHostKeyChecking no" a ~ jenkins/.ssh/config.

+2

'ssh git @ github.com' no solicita la clave de host, en su lugar se repite la solicitud de asignación _PTY en el canal 0/Hi $ {NOMBRE}! Se ha autenticado con éxito, pero GitHub no proporciona acceso de shell. 'StrictHostKeyChecking no', sin embargo, funcionó a las mil maravillas. –

+0

I * think * ¿Agregar github a los known_hosts también funcionará? ssh-keyscan -H http://github.com >> ~/.ssh/known_hosts – paulecoyote

+0

Si tus jenkins no tienen cabeza, otra forma conveniente es enviar ssh [email protected] de otro usuario, y luego copiar .ssh/know_hosts archivo para, por ejemplo ~ jenkins/.ssh /. También asegúrate de que jown jenkins: jenkins a todos los archivos en ~ jenkins/.ssh –

5

estoy usando una sola máquina Jenkins de revisar múltiples repositorios de GitHub y tenía problemas similares cuando su puesta en marcha. Lo que terminé haciendo fue configurar un archivo de configuración SSH para jenkins para que SSH supiera automáticamente qué archivo de ID asociar con cada repositorio.

/var/lib/jenkins/.ssh/config:

Host github-ABC 
    HostName github.com 
    User git 
    IdentityFile /var/lib/jenkins/.ssh/id_rsa_ABC 

En la configuración del proyecto Jenkins bajo administración de código fuente, que utiliza esto como el nombre del repositorio:

[email protected]:user/repo.git 

Por último, Uso la clave pública SSH como una clave de implementación en el repositorio de github.

+0

¿Es necesario cargar el archivo de configuración en alguna parte? –

+0

No, SSH debería mirar automáticamente ~/.ssh/config cuando se conecta. [Documentation] (http://linux.die.net/man/5/ssh_config) – mpdaugherty

5

Él me ayudó siguiente:

sesión bajo Jenkins

sudo su jenkins 

copiando la llave de GitHub a la carpeta .ssh Jenkins

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/ 

Raname las teclas

mv id_rsa_github id_rsa 
mv id_rsa_github.pub id_rsa.pub 
4

1) Cambiar usuario int o que tus Jenkins representan

su jenkins 

2) Crear la llave sin una frase de paso

3) ssh [email protected]

que funcionó perfectamente para mí.

Puede que tenga que crear una contraseña para la cuenta de Jenkins, de ser así utilizar sudo passwd jenkins

0

Si se conecta como Jenkins se puede hacer

ssh -i ~/.ssh/id_rsa git @ github. com

donde ~/.ssh/id_rsa es/tu/ssh/clave/el camino y se le solicitará la contraseña y añadir a los known_hosts presentar

-1

es necesario añadir la clave ssh de Jenkins a usuario de github.

Generate ssh key

Ir a:

Github->Settings(Top right)->SSH Keys(Left Pane)->Add SSH Key

Cuestiones relacionadas