Configuré Jenkins en una máquina Linux y mi repositorio git está en otro servidor Linux. Pero cuando trato de dar la URL del repositorio a Jenkins, aparece el siguiente error.
Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h ssh://user@ip/~/export1 HEAD" returned status code 128: stdout: stderr: Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.¿Cuál podría ser la causa de esto?
He visto que la clave rsa de ambos sistemas está presente en la carpeta .ssh/known_hosts de cada uno.
También puedo extraer o clonar código del repositorio a una carpeta en el sistema Jenkins. Entonces, ¿por qué Jenkins no puede tomarlo?
También probé la URL user@ip:/fullpath/to/repo
Debe asegurarse de que Jenkins se esté ejecutando como el usuario correcto (el que tiene las claves en ~/.ssh/id_rsa(.pub)
Es posible que ese usuario no sea el mismo que se usó en la URL de ssh: user@ip significa que se está conectando a ip usando una cuenta que tiene su clave pública en ~user/.ssh/authorized_key .
Entonces, el proceso de Jenkins debe ser ejecutado por una cuenta que tenga la clave pública y privada, cuya clave pública está en ~user/.ssh/authorized_key en el lado del servidor git.
Y esa cuenta debería haber hecho (solo una vez) un ssh-keyscan -H ip >> ~account/.ssh/known_hosts antes de cualquier intento de ssh, para registrar la ip del servidor git como un host conocido.
¿Ser un repositorio simple hace alguna diferencia o cambio en la URL?
No. El .git al final de la carpeta del repositorio básico es opcional cuando se usa como URL.
Además de la respuesta de @VonC, también puede usar el complemento Credentials para definir un conjunto de credenciales en su maestro de Jenkins que su trabajo de Jenkins usa para acceder a su repositorio de Git. Esto le permite ejecutar Jenkins como un usuario diferente al que tiene acceso al repositorio de Git.
El principal problema era la seguridad de los sistemas. No había comprobado los mecanismos de autenticación en mi servidor. La autenticación de contraseña para el servidor git estaba causando el problema porque la máquina jenkins intenta disparar directamente un ls-remote a la ruta. Cuando haga lo mismo en la terminal, se le pedirá una contraseña y luego la aceptará. Cuando configuré la autenticación de contraseña y UsePAM en no y habilité la autenticación RSA, la autenticación de clave pública y la configuración de clave autorizada en sí en el archivo sshd_config, y reinicié, pude acceder al repositorio y no recibí este error.