2012-04-17 9 views
11

Acabo de configurar mi primer esclavo Jenkins. Ejecuto la compilación, y toco problemas con las claves SSH. El servidor maestro de Jenkins se ejecuta bajo el usuario 'jenkins'. Configuré las claves SSH de manera que puedo SSH desde el maestro hasta el esclavo sin una contraseña.Jenkins - No se puede clonar desde el nodo esclavo. Claves SSH

p. Ej. Desde el maestro:

[email protected]:~$ ssh slave 
Last login: Tue Apr 17 10:30:22 2012 from masterjenkins.com 
$ whoami 
jenkins 

Así que eso demuestra que el nodo esclavo también se está ejecutando bajo el usuario 'jenkins'. (He copiado la clave pública ssh del jenkins @ slave al servidor git remoto). Y estoy en condiciones de emitir el clon de git manualmente desde el esclavo, pero cuando inicio a la construcción del maestro consigo este tipo de mensajes:

ERROR: Error cloning remote repo 'origin' : Could not clone [email protected]:abc 
hudson.plugins.git.GitException: Could not clone [email protected]:abc 
Caused by: hudson.plugins.git.GitException: Error performing command: git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build 
Command "git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/ 
Host key verification failed. 
fatal: The remote end hung up unexpectedly 
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin [email protected]:abc /var/lib/jenkins/workspace/abc_build" returned status code 128: Initialized empty Git repository in /var/lib/jenkins/workspace/abc_build/.git/ 
Host key verification failed. 
fatal: The remote end hung up unexpectedly 
Trying next repository 
ERROR: Could not clone repository 
FATAL: Could not clone 

por lo que todavía está dando a entender que mis claves SSH no se establecen arriba correctamente ¿Alguien puede decirme qué claves necesito copiar dónde?

Muchas gracias, ns

+1

También la verificación de la clave del host falló y parece indicar que su usuario de Jenkins nunca ha entrado en ese servidor y no ha aceptado la clave de host, intente realizar una llamada desde la CLI como usuario de jenkins para asegurarse de que funciona y acepte la clave de host. – Doon

+0

@Doon Esto podría terminar siendo el problema. Originalmente pensé que intentabas huir de la misma máquina que Jenkins intenta clonar. –

+0

¡Tiene el bastardo! Gracias por todas sus aportaciones. He copiado y pegado el comando que jenkins intentaba ejecutar en el esclavo: git clone --progreso -o origen git @ host: abc/var/lib/jenkins/workspace/abc y resultó que tenía algunas claves ofensivas en /root/.ssh/known_hosts ¡Después de eliminarlos y conectarse al git repo una vez más, funcionó! – nonshatter

Respuesta

5

Basado en la URL clon parece que está mezclando dos métodos de autenticación diferentes. Está intentando hacer SSH en el host como el usuario git no jenkins. Normalmente, cuando aloja sus propios repositorios GIT y clona con git @ servername: reponame, usa algo como gitolite.

¿Has configurado algo como gitolite?

Pruebe ssh'ing como este en su lugar como el usuario de jenkins.

ssh [email protected] 

A continuación, vea lo que devuelve. Este es un SSH más en línea con el [email protected]:abc que está haciendo.

Si aún no ha configuración de otro elemento de la máquina servidor, a continuación, cambiar su URL de clonar para [email protected]:pathtorepo

actualización

/home/git/.ssh/authorized_keys

En caso de tener una entrada como esta: (Esto es todo en UNA línea)

# gitolite start 
command="/home/git/bin/gl-auth-command jenkins",no 
-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAt3+od84Gc9NBVrVb3MKjekHcBDwXXONnVYMNVpuRadoz/FPJTkOIxozKVPJDPI670O252giYpF59sOKqAJL0xEVUrhq8cDFuFwQsSAp0ed1kp/GRxx+pwytL58rcVJEHAy2DkD1z5HlNaZyvIxQyfLTnYfuL1Hx6Qe7dal7mXO0= keycomment 
# gitolite end 

Añadir repository permiss iones a Jenkins en gitolite: (puede que tenga que clonar en el mismo equipo que aloja los repositorios, como el usuario gitolite)

git clone [email protected]:gitolite-admin 
cd gitolite-admin 
cd conf 
vi gitolite.conf 

Ahora busca la entrada para 'abc' o añadir uno si doesn' t existe

repo abc 
    RW+   = jenkins 

Ahora cometer y empujar cambia

git commit -a -m "Adding user jenkins to repo abc" 
git push 

Ahora haga su ssh [email protected] nuevo para ver si gitolite le informa sobre sus nuevos permisos.

+0

Hola, lo siento, sí. Olvidé agregar que utilizamos gitolite para administrar nuestros usuarios de git. ssh'ing del maestro al esclavo como ssh git @ slave solo solicita una contraseña. Una cosa que me molesta es que no pude encontrar fácilmente una manera fácil de ver quién corre jenkins como el esclavo. Una vez conectado al esclavo, hice un ssh-keygen y guardé los archivos en la ubicación predeterminada que era /home/jenkins/.ssh/id_rsa. Luego copié la clave pública a gitolite. – nonshatter

+0

@nonshatter Eso significa que la gitolita u otra cosa no está configurada correctamente. ¿Estás seguro de que authorized_keys está configurado correctamente en tu servidor? Yo uso gitlab para administrar mi instancia de gitolite. Hasta que pueda con éxito ssh git @ host sin una contraseña, sus clones no funcionarán. Lo primero que debe verificar es que las "authorized_keys" en el servidor para el usuario 'git' y su nombre jenkins con la clave pública correcta. –

+0

del esclavo: 'ssh $ git @ host solicitud de asignación de PTY falló en el canal 0 hola Jenkins, esto es gitolite v2.1-31-gf0cedeb se ejecuta en Git 1.7.0.4 la configuración gitolite le da acceso a la siguiente : @R_ @W_ \t probando RW \t abc Conexión al host cerrado ' – nonshatter

Cuestiones relacionadas