Error de verificación de la clave del host Jenkins

164

Tengo un problema con jenkins , al configurar "git", se muestra el siguiente error:

Failed to connect to repository : Command "git ls-remote -h https://[email protected]/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

He probado con ssh :

[email protected]:person/projectmarket.git

Esto es un error:

Failed to connect to repository : Command "git ls-remote -h [email protected]:person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

También he realizado estos pasos con la "clave SSH".

Inicie sesión bajo Jenkins

sudo su jenkins

Copie su clave github a la carpeta Jenkins .ssh

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/

Renombrar las llaves

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

pero todavía no funciona el repositorio de git en jenkins .

gracias por ayuda!

AM Mérida
fuente
no existe ningún usuario de jenkins
IceFire el

Respuestas:

183

Cambie al jenkinsusuario y ejecute el comando manualmente:

git ls-remote -h [email protected]:person/projectmarket.git HEAD

Recibirá la advertencia SSH estándar cuando se conecte por primera vez a un nuevo host a través de SSH:

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

Escriba yesy presione Entrar. La clave de host para bitbucket.orgahora se agregará al ~/.ssh/known_hostsarchivo y ya no obtendrá este error en Jenkins.

ctc
fuente
66
muestra esto: Permiso denegado (clave pública). fatal: el extremo remoto colgó inesperadamente
AM Mérida
66
Correcto, pero ese es un error completamente diferente. Ahora debe agregar su clave pública al repositorio en bitbucket.org.
ctc
2
+1 para "worksforme", tuvo exactamente el mismo problema. Creó id_rsa para el usuario apropiado, chmod-ed a jenkins, agregó la clave pública, todavía no funcionó. Probar git como sudo -u jenkins arrojó el archivo knonwn_hosts, solucionando el problema.
sibidiba
3
Debe ejecutarlo como el usuario que ejecuta Jenkins. En la mayoría de los sistemas, normalmente se ejecuta como un usuario separado (por ejemplo, un usuario 'jenkins'). Por lo tanto, deberá cambiar a ese usuario para asegurarse de que la dirección de bitbucket.org se agregue a ~ / .ssh / known_hosts.
ctc
43

Jenkins es una cuenta de servicio, no tiene una carcasa por diseño. En general se acepta que las cuentas de servicio. no debería poder iniciar sesión de forma interactiva.

Para resolver "La verificación de la clave del host Jenkins falló", realice los siguientes pasos. He usado mercurial con jenkins.

1) Ejecute los siguientes comandos en la terminal

             $ sudo su -s /bin/bash jenkins

proporcionar contraseña

2) Generar clave pública privada utilizando el siguiente comando:

              ssh-keygen

puedes ver la salida como ::

Generating public/private rsa key pair. 
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

3) Presione Entrar -> No dé ninguna frase de contraseña -> presione enter

             Key has been generated

4) vaya a -> cat /var/lib/jenkins/.ssh/id_rsa.pub

5) Copiar clave de id_rsa.pub

6) Salir de bash

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) pegar la llave

10) salir

11) Inicie sesión manualmente en el servidor mercurial

Nota: Por favor, inicie sesión manualmente; de ​​lo contrario, Jenkins volverá a dar el error "Error de verificación del host"

12) una vez hecho manualmente, ahora ve a Jenkins y dale build

¡¡¡Disfrutar!!!

Buena suerte

Feroz Ahmed Ansari
fuente
¿QUÉ contraseña se solicita aquí?
IceFire
26

O puedes usar:

ssh -oStrictHostKeyChecking=no host

Esto será inseguro (ataques de hombre en el medio) pero la solución más fácil.

La mejor manera de hacerlo es generar asignaciones correctas entre el host y la dirección IP, por sshlo que no se quejará:

#!/bin/bash

for domain in "github.com" "bitbucket.org"; do
    sed -i "/$domain/d" ~/.ssh/known_hosts
    line=$(ssh-keyscan $domain,`nslookup $domain | awk '/^Address: / { print $2 ; exit }'`)
    echo $line >> ~/.ssh/known_hosts
done

Extracto de la esencia .

FelikZ
fuente
3
Esto te abre a posibles ataques MITM.
ctc
1
Puede agregar -oStrictHostKeyChecking = no y conectarse una vez, lo que agregará el host al archivo conocido_hosts (igual que cuando ssh en la línea de comando y escriba sí para agregar la clave al archivo conocido_hosts) y luego elimine esta opción después de eso.
krupan
6

Tuve el mismo problema, lo solucioné así:

restablecer permiso en id_rsa * solo para el usuario actual sin grupo ni otro

chmod o-rwx ~/.ssh/id*
chmod G-rwx ~/.ssh/id*

ls -lart ~/.ssh/


-rw-------  1 jenkins nogroup  398 avril  3 09:34 id_rsa.pub
-rw-------  1 jenkins nogroup 1675 avril  3 09:34 id_rsa

Y claro ~ / .ssh / know_hosts

Ahora conéctate como jenkins

sudo su jenkins

Prueba los comandos jenkins

git ls-remote -h [email protected]:user/project.git HEAD

Si no aparece ningún problema, ahora Jenkins podrá conectar el repositorio (al menos para mí ^^)

Loodub
fuente
1
El comando anterior (chmod G-rwx ~ / .ssh / id *) para cambiar el permiso de grupo falló. Lo siguiente funcionó como se desea. chmod g-rwx ~ / .ssh / id *
samaitra
3
  • Asegúrese de que no estamos editando ninguna de las propiedades predeterminadas sshd_config para omitir el error

  • Error de verificación de host: definitivamente falta una entrada de nombre de host en el known_hostsarchivo

  • Inicie sesión en el servidor donde falla el proceso y haga lo siguiente:

    1. Sudo al usuario que ejecuta el proceso

    2. ssh-copy-id destinationuser@destinationhostname

    3. Aparecerá así por primera vez, diga sí y también le pedirá contraseña por primera vez:

      The authenticity of host 'sample.org (205.214.640.91)' can't be established.
      RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
      Are you sure you want to continue connecting (yes/no)? *yes*
      

      ¿Solicitud de contraseña? dar contraseña

    4. Ahora desde el servidor donde se está ejecutando el proceso, hazlo ssh destinationuser@destinationhostname. Debe iniciar sesión sin contraseña.

      Nota: No cambie los permisos predeterminados de los archivos en el directorio .ssh del usuario , terminará con diferentes problemas

GANESH
fuente
en el paso 3, puede darse el caso de que ya se le solicite que la clave ya exista en el archivo, pero debe continuar con estos 4 pasos y, si puede iniciar sesión sin contraseña del usuario de jenkins, entonces ya está todo configurado.
Rakibul Haq
3

En cuanto a la solución (por ejemplo, esclavo de Windows), defina la siguiente variable de entorno en las propiedades globales:

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

Jenkins, propiedades globales, variables de entorno, GIT_SSH_COMMAND

Nota: Si no ve la opción, probablemente necesite el complemento EnvInject para ello.

kenorb
fuente
3

Copie las claves de host de bitbucket y github:

ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa bitbucket.org)" >> /root/.ssh/known_hosts'
ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa github.com)" >> /root/.ssh/known_hosts'
Marco M
fuente
2

La mejor manera es simplemente usar su "git url" en formato URL 'https' en el archivo Jenkins o donde quiera.

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'

Nitina
fuente
2

SSH

Si lo está intentando con SSH, el error de verificación de la clave del host puede deberse a varias razones. Siga estos pasos para superar todas las razones.

  1. Establezca la variable de entorno como HOME y proporcione la dirección como el directorio raíz de la carpeta .ssh . por ejemplo: - Si su .ssh se mantiene dentro de la carpeta Nombre . C: / Usuarios / Nombre.
  2. Ahora asegúrese de que también se proporcione la clave SSH pública en el enlace del repositorio. O es github o bitbucket o cualquier otro.
  3. Abre git bash. E intente clonar el proyecto desde el repositorio. Esto ayudará a agregar su URL de repositorio en el archivo conocido_host, que se está creando automáticamente en la carpeta .ssh.
  4. Ahora abra jenkins y cree un nuevo trabajo. Luego haga clic en configurar.
  5. proporcione la URL de clonación en la gestión del código fuente en Git. La URL debe comenzar con [email protected] / ......... o ssh: // proje ........
  6. Debajo de la Credencial, debe agregar el nombre de usuario y la contraseña de su formulario de repositorio en el que está clonando el proyecto. Seleccione esa credencial.
  7. Y ahora aplique y guarde la configuración.
  8. ¡Bingo! Comienza a construir el proyecto. ¡Espero que ahora no recibas ningún error de verificación de la clave de host!
Prem Choudhary
fuente
2
  1. inicie sesión como jenkins usando: "sudo su -s / bin / bash jenkins"
  2. git clone el repositorio deseado que causa el error clave
  3. le pedirá que agregue la clave mostrando Sí / No (ingrese sí o y)

¡Eso es!

ahora puede volver a ejecutar el trabajo de jenkins.

Espero que esto solucione tu problema.

Timothy Asir
fuente
2

Me encontré con este problema y resultó que el problema era que el servicio jenkins no se ejecutaba como el usuario jenkins. Entonces, ejecutar los comandos como el usuario jenkins funcionó bien.

Jeff Hutchins
fuente
1

Tratar

ssh-keygen -R nombre de host

-R hostname Elimina todas las claves que pertenecen al nombre de host de un archivo conocido_hosts. Esta opción es útil para eliminar hosts hash

Aswathy Unni
fuente