2013-03-09 14 views
49

Sto cercando di ottenere Jenkins attivo e in esecuzione con un repository GitHub ospitato (utilizzando il plugin Git Jenkins). Il repository ha più sottomoduli git, quindi non sono sicuro di voler provare a gestire più chiavi di deploy.Gestione delle chiavi SSH all'interno di Jenkins per Git

Il mio account utente GitHub personale è un collaboratore di ciascuno dei progetti che desidero ottenere con Jenkins, quindi ho generato una chiave SSH entro /var/lib/jenkins/.ssh e l'ho aggiunta al mio account GitHub personale.

Tuttavia, quando provo e aggiungi l'URL del repository alla mia configurazione di progetto Jenkins, ottengo:

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

Allo stesso modo, quando ho pianificare una build ottengo:

stderr: Host key verification failed. 
fatal: The remote end hung up unexpectedly 

ho ha anche provato a configurare un file di configurazione SSH come indicato in here, ma senza risultato.

Qualcuno può far luce? Grazie

EDIT

Vorrei aggiungere che sto correndo CentOS 5.8

+1

Il collegamento fornito non esiste più. – Leo

risposta

61

Sembra che l'host github.com a cui jenkins tenta di connettersi non sia elencato sotto $HOME/.ssh/known_hosts dell'utente Jenkins. Jenkins funziona sulla maggior parte delle distro come utente jenkins e quindi ha la propria directory .ssh per memorizzare l'elenco delle chiavi pubbliche e known_hosts.

La soluzione più semplice che posso pensare per risolvere questo problema è:

# Login as the jenkins user and specify shell explicity, 
# since the default shell is /bin/false for most 
# jenkins installations. 
sudo su jenkins -s /bin/bash 

cd SOME_TMP_DIR 
# git clone YOUR_GITHUB_URL 

# Allow adding the SSH host key to your known_hosts 

# Exit from su 
exit 
+0

@Adam - Non hai mai parlato di 'known_hosts';;) Stavi solo parlando di 'id_rsa.chiave pubblica del pub: D – Tuxdude

+1

che ho fatto. (* Spesso si verifica un errore se l'host non è stato aggiunto o autorizzato *). Non ho menzionato esplicitamente il file. –

+0

Comunque mi hai battuto, mentre stavo formattando la risposta: D – Tuxdude

6

Hai provato login come utente Jenkins?

Prova questo:

sudo -i -u jenkins #For RedHat you might have to do 'su' instead. 
git clone [email protected]:your/repo.git 

Spesso si vede il fallimento se l'host non è stato aggiunto o autorizzato (da qui ho sempre il login manualmente come Hudson/Jenkins per la prima connessione a github/bitbucket), ma che puntano hai incluso presumibilmente risolti.

Se quanto sopra non funziona, provare a ricopiare la chiave. Assicurati che sia la chiave del pub (cioè id_rsa.pub). Forse hai perso alcuni personaggi?

4

Secondo questa article, si può provare il seguente comando:

ssh-add -l 

Se la chiave non è nella elenco, quindi

ssh-add /var/lib/jenkins/.ssh/id_rsa_project 
1

Questo funziona per me se si dispone di config e il file di chiave privata nel /Jenkins/.ssh/ è necessario chown (modifica proprietario) per questi 2 file quindi restart jenkins per consentire all'istanza jenkins di leggere questi 2 file.