Permiso denegado(clave pública) durante la obtención de GitHub con usuario de Jenkins en Ubuntu
ubuntu-11.04 ssh-keys (8)
Como nadie escribió la respuesta de los comentarios durante varios meses, lo haré rápidamente.
Hay 2 posibles problemas / soluciones:
id_rsa creado con un usuario incorrecto
Cree id_rsa como el usuario de jenkins (vea hudson no puede obtener del repositorio de git )
Deja la frase de contraseña vacía
He aquí mi arreglo:
- Jenkins se está ejecutando en mi máquina linux como usuario de ''jenkins''.
- He generado un par de claves ssh como se describe en Linux - Setup Git , para el usuario ''jenkins''.
- Cuando
sudo su jenkins
y pruebossh -vT [email protected]
, siempre me preguntan mi frase de contraseña, pero siempre estoy eventualmente autenticado. (la opción detallada muestra qué tecla se utiliza, entre otros). - Pude clonar mi repositorio de GitHub usando jenkins:
Así que:
jenkins@alpm:~/jobs/test git/workspace$ git pull
Enter passphrase for key ''/var/lib/jenkins/.ssh/id*_rsa'':
Already up-to-date.
Hasta este punto, he seguido las instrucciones a la carta. El problema es que el trabajo de Jenkins falla con el siguiente error:
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Este es el mismo error que obtengo cuando escribo la contraseña (pero, por supuesto, Jenkins no me pide la frase de contraseña). Las siguientes páginas:
Indíqueme que ssh-agent podría ayudarme a recordar la frase de contraseña, lo cual ocurre cuando estoy usando mi propio usuario, pero no la identificación de jenkins . Tenga en cuenta que mientras se ejecuta como mi usuario normal rinde:
echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
Mientras ejecuto el mismo comando que mi ''jenkins'' no produce nada (ni siquiera se deniega el permiso)
Mi comprensión del problema es que la frase de contraseña no se recuerda. ¿Tiene alguna idea? ¿Debo comenzar un administrador de ssh-agent o llavero para el usuario de jenkins? ¿Cómo? ¿O es adecuado el reenvío ssh al reenviar a la misma máquina? ¿Alguna idea más brillante?
ps: nunca hice sudo gitted
, siempre usé jenkins o mi cuenta de usuario (como se menciona en este SO post - Ubuntu / GitHub SSH Key Issue )
Para los usuarios de Mac, el problema se puede resolver eliminando las claves existentes y creando nuevas claves privadas y públicas siguiendo estos pasos:
1.Quita todas las claves públicas y privadas ubicadas en /Users/Username/.ssh
2. Elimine todas las credenciales guardadas en la pestaña Credenciales en Jenkins.
3.Retire las claves SSH públicas existentes definidas en la Configuración del repositorio de Github.
4.Cree nuevas claves SSH (privadas y públicas: id_rsa e id_rsa.pub) siguiendo los pasos de https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html#CreatingSSHkeys-CreatinganSSHkeyonLinux&MacOSX & MOSHOX
5. Establezca la clave SSH pública recién creada (id_rsa.pub) en Github o una configuración de repositorio equivalente.
6. En Jenkins, cree nuevas credenciales agregando la clave SSH privada (id_rsa) para su nombre de usuario Github.
7. El Error debe ser eliminado ahora.
Para resumir lo que debe hacerse en el servidor de Jenkins:
# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/
# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""
# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*
Recuerda:
- Mantenga el nombre predeterminado "id_rsa" al generar las claves, ya que otras como "id_rsa_jenkins" no funcionarán, incluso si están configuradas correctamente.
- No use una frase de contraseña para su clave
- Verifique que la clave pública (id_rsa.pub) haya sido cargada en el servidor git (GitHub, Bitbucket, etc.). Una vez hecho esto, pruebe su clave SSH ejecutando:
ssh -vvv [email protected]
(cambie la dirección de acuerdo con su servidor git)
Para verificar son los siguientes:
- si la clave pública derecha (id_rsa.pub) se carga en el servidor git.
- El usuario de jenkins tendrá acceso a github -> para CHECK si la clave privada correcta (id_rsa) se copia en /var/lib/jenkins/.ssh/
- si el archivo known_hosts se crea dentro de la carpeta ~ / .ssh. Pruebe ssh -vvv [email protected] para ver los registros de depuración. Si las cosas van bien, github.com se agregará a known_hosts.
- si el permiso de id_rsa está establecido en 755 (chmod 755 id_rsa)
Después de todos los controles -> prueba ssh -vvv [email protected] ¡ No intentes hacer config en jenkins hasta que ssh funcione!
Si está ejecutando jenkins como un servicio en Windows, debe verificar el usuario que ejecuta el servicio . Si creó las claves con el usuario "MACHINENAME / user", cambie el servicio para que el usuario que lo ejecuta pueda coincidir
Solucioné este problema simplemente dejando la frase de contraseña vacía al crear las claves.
Yo agregaría que si creaste las claves a mano, aún podrían ser tuyas y no pueden ser leídas por jenkins, intenta:
sudo chown jenkins -R /var/lib/jenkins/.ssh/*
las claves deben ser generadas por el usuario de jenkins.
sudo su jenkins
ssh-keygen
una vez que se genera la clave, se debe agregar como clave ssh en bitbucket o github.