Jenkins git plugin con acceso ssh a bitbucket: Permiso denegado (publickey). fatal: no se pudo leer desde el repository remoto

No puedo get el plugin git de Jenkins para autenticarme con un repository privado de git en bitbucket.org. He generado un par de keys privadas / públicas con ssh-keygen y configuré la key pública en mi count de bitbucket en la página de counts de ssh keys.

En la página de configuration del trabajo, configuré la sección Gestión de código fuente de la siguiente manera:

Repository URL: git@bitbucket.org:mproject.git (the SSH url for clone) Cnetworkingentials: The private key id_rsa generated by ssh-keygen (no passphrase) and user git. 

Inmediatamente da el siguiente error:

 Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h git@bitbucket.org:myproject.git HEAD" returned status code 128: stdout: stderr: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

Cuando hago el mismo command git desde la command-line en el directory del espacio de trabajo en un shell, funciona bien. Tengo mi ~ / .bashrc especificado en Entorno de compilation / Ruta del file de properties, por lo que estoy confundido sobre lo que podría ser diferente cuando se ejecuta en el trabajo de jenkins.

Solo tengo dos usuarios en mi máquina jenkins (jenkins y root) y estaba ejecutando el command git como usuario jenkins. El directory de inicio del usuario jenkins es / home / jenkins. Mi trabajo jenkins se ejecuta como usuario anónimo. ¿Podría ser éste el problema?

Tengo los siguientes files .ssh:

 -rw-r--r--. 1 jenkins jenkins 89 Apr 25 11:18 config -rw-r--r--. 1 jenkins jenkins 137 Apr 24 13:56 environment -rw-------. 1 jenkins jenkins 1766 Apr 24 13:54 id_rsa -rw-r--r--. 1 jenkins jenkins 425 Apr 24 13:54 id_rsa.pub -rw-r--r--. 1 jenkins jenkins 806 Apr 25 12:06 known_hosts drwx------. 2 jenkins jenkins 85 Apr 25 12:05 .ssh 

Sospecho que usted ha agregado keys ssh a su usuario, no al usuario jenkins.

Por defecto Jenkins en ejecución por el usuario Jenkins, cuyo directory de inicio es (por defecto) /var/lib/jenknis . Para verificar mi hipótesis, inicie session como usuario de jenkins:

 su jenkins 

y llama:

 git -c core.askpass=true ls-remote -h git@bitbucket.org:myproject.git HEAD 

para verificar si devolverá un error.

Debe tener el directory /var/lib/jenknis/.ssh que contenga las keys ssh correctas. Deberá agregar id_rsa.pub desde ese directory a su count en bitbucket.

A continuación, en la configuration del trabajo, simplemente configure:

 Repository URL: git@bitbucket.org:ntti3/gtip.git Cnetworkingentials: - none - 

La configuration descrita funciona para mi Jenkins con bitbucket.

Asegúrese también de que el directory .ssh haya establecido los derechos de acceso adecuados. A Ssh no le gustan los directorys 'demasiado abiertos':

 -rw------- 1 jenkins jenkins 407 Apr 14 14:14 authorized_keys -rw------- 1 jenkins jenkins 1676 Nov 25 16:37 id_rsa -rw-rw-r-- 1 jenkins jenkins 400 Nov 25 16:38 id_rsa.pub -rw-r--r-- 1 jenkins jenkins 3096 Feb 11 12:11 known_hosts drwx------ 2 jenkins jenkins 4096 Apr 14 14:14 .ssh 

En mi caso, el problema tenía algo que ver con tener un usuario de jenkins ya creado con home directory / home / jenkins y luego instalar jenkins como root. Esto puede haber creado cierta confusión entre si el directory de inicio era / var / lib / jenkins (como es normal) y / home / jenkins. La solución fue:

  1. userdel jenkins #Eliminar usuario de jenkins
  2. rm -rf / home / jenkins; rm -rf / var / lib / jenkins #Eliminar viejos jenkins dirs
  3. Instalar jenkins de nuevo como un process normal que crea el usuario de jenkins
  4. mkdir /var/lib/jenkins/.ssh; chmod 700 /var/lib/jenkins/.ssh
  5. cd /var/lib/jenkins/.ssh
  6. Crear par de llaves usando ssh-keygen, agregar key a bitbucket, etc.
  7. Creando una cnetworkingencial en jenkins para el file id_rsa recién acuñado
  8. Creando un nuevo proyecto para usar el plugin git con el url de repository y el file id_rsa.pub

Gracias por la ayuda.

En mi caso, el problema fue la huella dactilar de la llave RSA. Agregué la key ssh para el usuario de Jenkins como se describe en la documentation, pero recibí el mismo post de error. Lo resolví iniciando session como el usuario de Jenkins usando

 sudo su jenkins 

Luego, escribí lo siguiente

 git -c core.askpass=true ls-remote -h ssh://git@SERVER/PROJECT/REPO.git HEAD 

Y recibí el siguiente post

 The authenticity of host 'SERVER ([IP_ADDRESS]:PORT)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:ff. Are you sure you want to continue connecting (yes/no)? 

Al responder 'sí' a esta pregunta, el server Bitbucket se agrega a la list de hosts conocidos y eso realmente resolvió mi problema.

para ssh.bash

 ssh -K ${PATH}/.ssh2/id_rsa_2048_b $* export GIT_SSH = ${PATH}/ssh.bash