Verifica chiave host Jenkins non riuscita


164

Ho un problema con jenkins , impostando "git", mostra il seguente errore:

Failed to connect to repository : Command "git ls-remote -h https://person@bitbucket.org/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

Ho testato con ssh :

git@bitbucket.org:person/projectmarket.git

Questo è un errore:

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

Ho anche fatto questi passaggi con "chiave SSH".

Accedi sotto Jenkins

sudo su jenkins

Copia la tua chiave github nella cartella .ssh di Jenkins

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

Rinomina le chiavi

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

ma ancora non funziona repository git in jenkins .

grazie di aiuto !.



nessun utente jenkins esistente
IceFire

Risposte:


183

Passare jenkinsall'utente ed eseguire il comando manualmente:

git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD

Riceverai l'avvertimento SSH standard quando ti connetti per la prima volta a un nuovo host tramite 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)?

Digita yese premi Invio. La chiave host per bitbucket.orgverrà ora aggiunta al ~/.ssh/known_hostsfile e questo errore non verrà più visualizzato in Jenkins.


6
mostra questo: Autorizzazione negata (chiave pubblica). fatale: l'estremità remota riattaccò inaspettatamente
AM Mérida

6
Giusto, ma questo è un errore completamente diverso. Ora devi aggiungere la tua chiave pubblica al repository su bitbucket.org.
ctc,


2
+1 per "worksforme", ha avuto lo stesso identico problema. Creato id_rsa per l'utente corretto, modificato in jenkins, aggiunto la chiave pubblica, non funzionava ancora. Provare git come sudo -u jenkins ha prodotto il file knonwn_hosts, risolvendo il problema.
Sibidiba,

3
È necessario eseguirlo come l'utente che esegue Jenkins. Sulla maggior parte dei sistemi, in genere viene eseguito come utente separato (ad esempio un utente "jenkins"). Quindi, dovresti passare a quell'utente per assicurarti che l'indirizzo per bitbucket.org sia aggiunto a ~ / .ssh / known_hosts.
ctc,

43

Jenkins è un account di servizio, non ha una shell di progettazione. È generalmente accettato tale account di servizio. non dovrebbe essere in grado di accedere in modo interattivo.

Per risolvere "Verifica chiave host Jenkins non riuscita", procedere come segue. Ho usato mercurial con jenkins.

1) Eseguire i seguenti comandi sul terminale

             $ sudo su -s /bin/bash jenkins

fornire la password

2) Genera chiave privata pubblica usando il comando seguente:

              ssh-keygen

puoi vedere l'output come ::

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) Premere Invio -> Non assegnare alcuna passphrase -> premere Invio

             Key has been generated

4) vai su -> cat /var/lib/jenkins/.ssh/id_rsa.pub

5) Copia la chiave da id_rsa.pub

6) Uscita da bash

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) Incolla la chiave

10) uscita

11) Accedi manualmente al server mercurial

Nota: Pls effettua il login manualmente, altrimenti jenkins restituirà nuovamente l'errore "verifica dell'host fallita"

12) una volta fatto manualmente, ora vai su Jenkins e dai a build

Godere!!!

In bocca al lupo


QUALE password è richiesta qui?
IceFire

26

Oppure puoi usare:

ssh -oStrictHostKeyChecking=no host

Questa sarà una soluzione insicura (attacchi dell'uomo nel mezzo) ma più semplice.

Il modo migliore per farlo è generare mappature corrette tra host e indirizzo IP, quindi sshnon lamentarti:

#!/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

Estratto dal Gist .


3
Questo ti apre a potenziali attacchi MITM.
ctc,

1
È possibile aggiungere -oStrictHostKeyChecking = no e connettersi una volta, il che aggiungerà l'host al file known_hosts (come quando si ssh sulla riga di comando e digitare yes per aggiungere la chiave al file known_hosts) e quindi rimuovere questa opzione.
Krupan,

6

Ho avuto lo stesso problema, l'ho risolto così:

ripristina l'autorizzazione su id_rsa * solo per l'utente corrente nessun gruppo nessun altro

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

E cancella ~ / .ssh / know_hosts

Ora connettiti come jenkins

sudo su jenkins

Prova i comandi jenkins

git ls-remote -h git@bitbucket.org:user/project.git HEAD

Se non appare alcun problema, ora jenkins sarà in grado di collegare il repository (almeno per me ^^)


1
Il comando precedente (chmod G-rwx ~ / .ssh / id *) per modificare l'autorizzazione del gruppo non è riuscito. Il seguito ha funzionato come desiderato. chmod g-rwx ~ / .ssh / id *
samaitra,


3
  • Assicurati di non modificare nessuna delle proprietà sshd_config predefinite per saltare l'errore

  • Verifica dell'host non riuscita - Sicuramente una voce mancante del nome host nel known_hostsfile

  • Accedi al server in cui il processo non riesce e procedi come segue:

    1. Sudo per l'utente che esegue il processo

    2. ssh-copy-id destinationuser@destinationhostname

    3. Ti verrà richiesto in questo modo per la prima volta, di 'sì e chiederà anche la password per la prima volta:

      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*
      

      Richiesta password? dare la password

    4. Ora dal server su cui è in esecuzione il processo, fallo ssh destinationuser@destinationhostname . Dovrebbe accedere senza password.

      Nota: non modificare le autorizzazioni predefinite dei file nella directory .ssh dell'utente , si avranno problemi diversi


al passaggio 3, è possibile che ti venga richiesto di inserire già la chiave nel file, ma dovresti continuare con questi 4 passaggi e se puoi accedere senza password dall'utente jenkins, allora sei pronto.
Rakibul Haq,

3

Per quanto riguarda la soluzione alternativa (ad esempio Windows Slave), definire la seguente variabile di ambiente nelle proprietà globali:

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

Jenkins, Proprietà globali, Variabili d'ambiente, GIT_SSH_COMMAND

Nota: se non vedi l'opzione, probabilmente avrai bisogno del plugin EnvInject per questo.


3

Copia le chiavi host da bitbucket e 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'

2

Il modo migliore per utilizzare il tuo "git url" nel formato URL "https" nel file Jenkins o dove vuoi.

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


2

SSH

Se lo stai provando con SSH, l' errore di verifica della chiave host può essere dovuto a diversi motivi. Segui questi passaggi per superare tutti i motivi.

  1. Impostare la variabile di ambiente come HOME e fornire l'indirizzo come directory principale della cartella .ssh . ad es .: - Se il tuo .ssh è conservato nella cartella Nome . C: / Users / nome.
  2. Ora assicurati che la chiave SSH pubblica sia fornita anche nel link al repository. O è github o bitbucket o qualsiasi altro.
  3. Apri git bash. E prova a clonare il progetto dal repository. Ciò contribuirà ad aggiungere l'URL del repository nel file known_host, che viene creato automaticamente nella cartella .ssh.
  4. Ora apri jenkins e crea un nuovo lavoro. Quindi fare clic su Configura.
  5. fornire l'URL di clonazione nella gestione del codice sorgente in Git. L'URL deve iniziare con git@github.com / ......... o ssh: // proje ........
  6. Sotto le credenziali è necessario aggiungere il nome utente e la password del modulo del repository su cui si sta clonando il progetto. Seleziona quella credenziale.
  7. E ora applica e salva la configurazione.
  8. Bingo! Inizia a costruire il progetto. Spero ora che non venga visualizzato alcun errore di verifica della chiave host!

2
  1. accedi come jenkins usando: "sudo su -s / bin / bash jenkins"
  2. git clona il repository desiderato che causa l'errore chiave
  3. ti chiederà di aggiungere la chiave mostrando Sì / No (inserisci sì o y)

questo è tutto!

ora è possibile rieseguire il lavoro jenkins.

Spero che questo risolva il problema.


2

Ho riscontrato questo problema e si è scoperto che il servizio jenkins non veniva eseguito come utente jenkins. Quindi eseguire i comandi come l'utente jenkins ha funzionato bene.


1

Provare

ssh-keygen -R hostname

-R hostname Rimuove tutte le chiavi appartenenti al nome host da un file known_hosts. Questa opzione è utile per eliminare gli host con hash

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.