Cómo configurar Hudson y el plugin git con una key SSH

Tengo Hudson (sistema de continuous integration) con el complemento git ejecutándose en un service Tomcat de Windows. msysgit está instalado y el msysgit bin dir está en la ruta. PuTTY / Pageant / plink están instalados y msysgit está configurado para usarlos.

Cuando ejecuto un trabajo que intenta clonar el repository de git, aparece el siguiente error:

$ git clone -o origin [email protected]:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace" ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:project.git ERROR: Cause: Error performing git clone -o origin [email protected]:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace Trying next repository ERROR: Could not clone from a repository FATAL: Could not clone hudson.plugins.git.GitException: Could not clone 
  1. Ejecutando git clone -o origin git @ hostname: project.git "e: \ HUDSON_HOME \ jobs \ Project Trunk \ workspace" desde la command-line funciona sin error.
  2. Confirmé que mi problema no es el mismo que el de Hudson git clone, porque git está en la ruta y no aparece ningún error sobre el ejecutable de git en la página Configurar sistema de Hudson.

Esto me lleva a pensar que el problema es que el usuario que posee el service Tomcat / Hudson Windows (Sistema local) no tiene configurada una key SSH para poder clonar el repository git.

Mi pregunta es, ¿cómo puedo configurar las cosas para que git plugin / msysgit sepa usar una key SSH particular cuando intente clonar? No creo que el Pageant funcione porque el service de Tomcat se ejecuta como el usuario del "Sistema local", pero puedo estar equivocado. Intenté configurar el Pageant como un service (usando runassvc.exe), pasando la key apropiada y ejecutándola como "Sistema local". El service Tomcat / Hudson no parece poder ver la key desde el service del concurso. ¿Hay alguna otra técnica para configurar una key?

Gracias.

EDITAR: La discusión en http://n4.nabble.com/Hudson-with-git-and-ssh-td375633.html muestra que alguien más tenía una pregunta similar. Se sugirió ssh-agent y esta herramienta viene con msysgit, pero no estoy seguro de cómo usarlo junto con el service de Hudson. Aún así, buena pista si alguien puede llenar los vacíos. Gracias a Peter por el comentario con el enlace.

Además, la discusión en http://n4.nabble.com/questions-about-git-and-github-plug-ins-td383420.html comienza con la misma pregunta. Estoy tratando de resucitar ese hilo.

Usamos Hudson, revisando el código fuente de git con una key ssh. Sin embargo, en realidad tenemos a Hudson en un server ubuntu. El par de llaves ssh de Hudson vive en ~hudson/id_rsa y ~hudson/id_rsa.pub

Entonces, adaptando nuestros consejos para una configuration de Windows:

Los desarrolladores basados ​​en Windows en nuestro equipo usan MSysGit y regularmente revisan el código a través de git sobre ssh, pero no usan Putty / Pageant. Encontramos que el concurso es doloroso debido a algunos errores de protocolo con el inicio de session. En su lugar, configuraron git para usar openSSH (es una de las opciones durante la installation). Su par de keys público / privado luego vive en ~username/id_rsa y ~username/id_rsa.pub y todo funciona.

Por lo tanto, recomendaría cambiar su configuration de git para usar OpenSSH en lugar de desfile. Si nada más, no tendrá que preocuparse por comenzar el concurso.

Puede usar PuttyGen para generar la key. Sin embargo, si está utilizando OpenSSH en lugar del concurso, deberá exportar una key privada adecuada (de uno de los menus en la parte superior de PuttyGen) y savela como id_rsa , y copyr y pegar la key pública de la GUI de PuttyGen. (muestra pero no saveá una versión adecuada para OpenSSH) y la saveá como id_rsa.pub . Esto se debe a que Putty usa un formatting ligeramente diferente para la key que OpenSSH.

Alternativamente, por supuesto, siempre puedes alojar tu server hudson en un server ubuntu (ya sea real oa través de VirtualBox)

Otra nota importante para Windows (que quiero adjuntar a esta respuesta porque encontré esta pregunta muy rápidamente, pero encontré este detalle adicional que necesitaba solo después de horas de búsqueda):

Git quiere que la variable de entorno% HOME% se establezca en el directory de usuario (IE C: \ Documents and Settings \ hudsonuser) … ¡así es como se ve allí para el directory .ssh con los files de key!

Encontré esto aquí en la falla del server (pero no tengo la reputación suficiente para hacerlo).

Descubrí que tenía que usar una táctica diferente para hacer que esto funcionara en Ubuntu (con Jenkins, no con Hudson, aunque de lo contrario parece básicamente el mismo problema. Comprobé la variable de entorno %HOME% través de la GUI de Jenkins y eso se veía bien.

La key que quería usar para identificar a Jenkins en el repository privado de Github ya existía. Los copié en /var/lib/jenkins/.ssh , tanto el id_rsa como el file id_rsa.pub para esa key y count.

Inicialmente los copié como " root " y eran inaccesibles para Jenkins, así que todavía recibía errores (confusamente, los errores me pedían que ingresara una frase de contraseña cuando no la había). Así que hice chown , chmod y chgrp para configurar que estén disponibles para Jenkins .

Probé esto haciendo un clon git mientras estaba conectado como usuario de Jenkins.

Sé que esta ruta es específica de Ubuntu, pero una configuration similar asegurando que los files key estén disponibles, en el lugar correcto y probando en la línea de command haciendo solo git clone git:myrepo , podría al less identificar dónde Windows es diferente.

pon tu carpeta .ssh debajo

C: \ Windows \ SysWOW64 \ config \ systemprofile

o

C: \ Windows \ System32 \ config \ systemprofile

depende de tu sistema es 32 o 64.

Este es el directory "USUARIO" para "Sistema local".