Permiso denegado (key pública) al configurar Jenkins

Estoy configurando Jenkins en una máquina server Win 2008 y estoy teniendo algunos problemas para configurar Jenkins para conectarme a GitHub. Obtuve el siguiente error:

Command "git.exe fetch -t git@github.com:USER/REPO.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Permission denied (publickey). fatal: The remote end hung up unexpectedly ERROR: Could not fetch from any repository FATAL: Could not fetch from any repository hudson.plugins.git.GitException: Could not fetch from any repository at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:950) at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:908) at hudson.FilePath.act(FilePath.java:758) at hudson.FilePath.act(FilePath.java:740) at hudson.plugins.git.GitSCM.checkout(GitSCM.java:908) at hudson.model.AbstractProject.checkout(AbstractProject.java:1184) at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:537) at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:425) at hudson.model.Run.run(Run.java:1376) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:175) 

Cosas que he comprobado

  • El service de Jenkins se ejecuta bajo mi nombre de usuario.
  • Cambié mi key SSH para que ya no tenga una contraseña.
  • He verificado que mi key SSH es válida ejecutando el mismo command que Jenkins usando msysgit.
  • Verificado todas mis routes son correctas.

Configuración de configuration de Jenkins

  • Jenkins 1.418
  • Plugin GitHub 0.5
  • Git plugin 1.1.9

msysgit funciona, pero el indicador de CMD no funciona Cuando navego a un repository válido y ejecuto el command desde el indicador de DOS, también falla.

¿Tienes alguna idea de lo que me puedo perder?

Gracias por tu ayuda.

Como comenté, especificar la variable de entorno HOME es la key cuando se usa el protocolo ssh.
Como Windows no tiene un HOME , debe definirlo explícitamente, en el directory que desee.

Sin embargo, Vestnik comenta:

He especificado anular HOME en el nodo esclavo de Windows para dirigirlo a C:\jenkins .
He puesto id_rsa correcto bajo C:\jenkins\.ssh pero todavía tengo este problema.
Mi agente esclavo se ejecuta como service en la count SYSTEM.

  • Problema similar: " Problema con Hudson + Git + Gitosis en Windows "
  • Resolución similar: " Problema con Hudson + Git + Gitosis en Windows "

Dos consejos:

  • usted necesita hacer que su esclava muestre " set " para verificar si HOME está definido cuando se usa con la count SYSTEM.
    Si no es así, eso puede significar que necesita agregar esa variable a las "variables de entorno del sistema", no a las "variables de entorno del usuario".

mostrar env desde la definición del trabajo

  • No olvide tener id_rsa e id_rsa.pub en el directory %HOME%\.ssh : necesita keys ssh tanto públicas como privadas. (como se menciona en " git clone with ssh issue ")

Si tiene una compilation parametrizada, también puede definir HOME esa manera y verificar si su esclavo selecciona el valor correcto para HOME :

definir variables personalizadas

Hay dos complementos en jenkins relacionados con ssh que se pueden usar: Publicar sobre SSH y Jenkins SSH .

El primer complemento proporciona la disponibilidad para establecer una key ssh global y el segundo complemento proporciona la disponibilidad para establecer varias keys ssh.

A continuación, debe instalar dos complementos más que se utilizarán en la configuration del proyecto GitHub Plugin y Jenkins Git Plugin .

El complemento GitHub se usará para configurar el proyecto GitHub . El plugin Jenkins Git se usará para establecer la "URL del repository" y otras cosas como una twig, etc.

Todos los complementos están disponibles en la pestaña disponible en Jenkins Plugin Manager.

Copiado de mi blog, sobre el tema :

Configuración de Jenkins:
El complemento Jenkins SSH proporciona la disponibilidad para establecer la key privada por host, el segundo complemento hace el trabajo para un host global.
Si se utiliza el complemento Jenkins SSH, en los hosts remotos SSH escriba el host, el usuario, la frase de contraseña y la ruta a la key privada.
Si se utiliza Publicar en SSH, en la configuration SSH escriba la contraseña y pegue la key privada o escriba la ruta a ella.
La configuration del proyecto es:
Proyecto GitHub https://github.com/GitUser/iOS-project/
* Gestión de código fuente
-> Git
-> -> Repositorios
-> -> -> URL del repository: git@github.com: GitUser / iOS-project.git
– Depende de usted configurar una twig o tomar la pnetworkingeterminada:
* Build Triggers
-> Poll SCM – Seted –
-> Horario: * * * * *
*Construir
-> Ejecutado Shell

 -> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0 clean -> -> Command: agvtool new-version -all $BUILD_NUMBER -> -> Command: xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0 -> -> Command: xcrun -sdk iphoneos5.0 PackageApplication -v $WORKSPACE/build/AdHoc-iphoneos/iOS-project.app -o $WORKSPACE/build/AdHoc-iphoneos/iOS-project-$BUILD_NUMBER.ipa PROVISIONING_PROFILE="<provisioning profile>" -> -> Command: curl http://testflightapp.com/api/builds.json -F file=@$WORKSPACE/build/AdHoc-iphoneos/iCushion-1.0-$BUILD_NUMBER.ipa -F api_token=<api_token> -F team_token=<team_token> -F notes="This is an autodeploy build from Jenkins!" -F notify=True -F distribution_lists="<distributedlist 1>, <distributedlist 2>" 

Parece que el complemento git ahora proporciona una manera de apuntar a Jenkins al directory de inicio.

  1. Haga clic en el button Agregar cnetworkingencial.

enter image description here

  1. Apunta Jenkins a tu key privada.

enter image description here

  1. Seleccione las cnetworkingenciales recién agregadas de la list.

enter image description here

En mi entorno (Jenkins de 64 bits con Java de 32 bits, ejecutándose en un Windows Server 2016 de 64 bits), la solución fue colocar la key en la carpeta C: \ Windows \ SysWOW64 \ config \ systemprofile \ .ssh . De acuerdo con la documentation de Git Plugin :

De forma pnetworkingeterminada, el instalador de Jenkins Windows configura Jenkins para que se ejecute como un service en Windows, que se ejecuta como la "Cuenta del sistema local", NO su count de usuario. Dado que la "count del sistema local" no tiene configuradas las keys SSH o known_hosts, "git clone" se bloqueará durante la compilation. Es posible mantener a Jenkins ejecutándose como la "count del sistema local" y clonar repositorys a través de SSH asegurándose de que la "count del sistema local" está configurada con un directory .ssh configurado correctamente (es decir id_rsa, id_rsa.pub, AND known_hosts)