2015-04-27 28 views
11

Non riesco a ottenere il plugin git Jenkins per l'autenticazione con un repository privato git su bitbucket.org. Ho generato una coppia di chiavi privata/pubblica usando ssh-keygen e impostato la chiave pubblica nel mio account bitbucket sotto la pagina dell'account delle chiavi ssh.Plugin git Jenkins con accesso ssh a bitbucket: Autorizzazione negata (chiave pubblica). fatale: Impossibile leggere dal repository remoto

Nella pagina di lavoro configure ho impostato la sezione del codice sorgente di gestione come segue:

Repository URL: [email protected]:mproject.git (the SSH url for clone) 
Credentials: The private key id_rsa generated by ssh-keygen (no passphrase) and user git. 

Dà subito il seguente errore:

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD" returned status code 128: 
stdout: 
stderr: Permission denied (publickey). 
fatal: Could not read from remote repository. 
Please make sure you have the correct access rights 
and the repository exists. 

Quando faccio stesso comando git da linea di comando nella directory dello spazio di lavoro in una shell funziona perfettamente. Ho il mio ~/.bashrc specificato in Ambiente di costruzione/Percorso file proprietà, quindi sono confuso che cosa potrebbe essere diverso quando viene eseguito nel lavoro jenkins.

Ho solo due utenti sulla mia macchina jenkins (jenkins e root) e stavo eseguendo il comando git come utente jenkins. L'home directory dell'utente jenkins è/home/jenkins. Il mio lavoro di jenkins funziona come utente anonimo. Potrebbe essere questo il problema?

Ho i seguenti file .ssh:

-rw-r--r--. 1 jenkins jenkins 89 Apr 25 11:18 config 
-rw-r--r--. 1 jenkins jenkins 137 Apr 24 13:56 environment 
-rw-------. 1 jenkins jenkins 1766 Apr 24 13:54 id_rsa 
-rw-r--r--. 1 jenkins jenkins 425 Apr 24 13:54 id_rsa.pub 
-rw-r--r--. 1 jenkins jenkins 806 Apr 25 12:06 known_hosts 
drwx------. 2 jenkins jenkins 85 Apr 25 12:05 .ssh 
+0

Inoltre, qual è un buon modo per eseguire il debug di questo tipo di problema? –

+0

Il mio lavoro jenkins viene eseguito come utente anonimo. Potrebbe essere questo il problema? –

risposta

12

ho il sospetto, sono stati aggiunti le chiavi SSH per l'utente, non per l'utente Jenkins.

Per impostazione predefinita, Jenkins è in esecuzione dall'utente Jenkins, la cui home directory è (per impostazione predefinita) /var/lib/jenknis. Per controllare la mia ipotesi, si prega di effettuare il login come utente Jenkins:

su jenkins 

e chiamare:

git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD 

per controllare se restituirà un errore.

È necessario disporre della directory /var/lib/jenknis/.ssh che contiene le chiavi corrette ssh. Dovrai aggiungere id_rsa.pub da quella directory al tuo account su bitbucket.

Avanti nella configurazione di lavoro solo set:

Repository URL: [email protected]:ntti3/gtip.git 
Credentials: - none - 

configurazione descritta funziona per il mio Jenkins con bitbucket.

Assicurarsi inoltre che la directory .ssh abbia impostato i diritti di accesso appropriati. Ssh non piace directory 'troppo aperti':

-rw------- 1 jenkins jenkins 407 Apr 14 14:14 authorized_keys 
-rw------- 1 jenkins jenkins 1676 Nov 25 16:37 id_rsa 
-rw-rw-r-- 1 jenkins jenkins 400 Nov 25 16:38 id_rsa.pub 
-rw-r--r-- 1 jenkins jenkins 3096 Feb 11 12:11 known_hosts 
drwx------ 2 jenkins jenkins  4096 Apr 14 14:14 .ssh 
+0

Grazie. Aggiornato il mio post per indirizzare i tuoi suggerimenti (già usando utente jenkins e permessi sembrano ok). Cos'altro potrebbe essere? –

+0

Forse questo aiuterà http://stackoverflow.com/questions/10589976/permission-denied-public-key-during-fetch-from-github-with-jenkins-user-on-ubu. Scusa ma in questo momento non ho altra idea. – kkamilpl

3

Nel mio caso il problema aveva a che fare con avere un utente Jenkins già creato con la home directory/home/Jenkins e quindi l'installazione di Jenkins come root. Ciò potrebbe aver creato confusione tra la home directory/var/lib/jenkins (come è normale) e/home/jenkins.La correzione è stato quello di:

  1. userdel Jenkins #Delete Jenkins utente
  2. rm -rf/home/Jenkins; rm -rf/var/lib/jenkins #Rimuovi le vecchie jenkins dirs
  3. Installa jenkins nuovamente come processo normale che crea utente jenkins
  4. mkdir /var/lib/jenkins/.ssh; chmod 700 /var/lib/jenkins/.ssh
  5. cd /var/lib/jenkins/.ssh
  6. Crea coppia di chiavi con ssh-keygen, aggiungere la chiave per bitbucket ecc
  7. Creazione di una credenziale in Jenkins per nuova coniate id_rsa presentare
  8. Creazione di un nuovo progetto per utilizzare plug-git con file di archivio URL e id_rsa.pub

Grazie per l'aiuto.

0

Nel mio caso, il problema era l'impronta digitale della chiave RSA. Ho aggiunto la chiave ssh per l'utente Jenkins come descritto nella documentazione, ma ho ricevuto lo stesso messaggio di errore. Ho risolto accedendo come utente Jenkins utilizzando

sudo su jenkins 

Poi, ho digitato il seguente

git -c core.askpass=true ls-remote -h ssh://[email protected]/PROJECT/REPO.git HEAD 

ed ho ottenuto il seguente messaggio

The authenticity of host 'SERVER ([IP_ADDRESS]:PORT)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:ff. Are you sure you want to continue connecting (yes/no)? 

Rispondendo 'sì' a questa domanda, il server Bitbucket è stato aggiunto alla lista degli host conosciuti e questo ha veramente risolto il mio problema.

0

per ssh.bash

ssh -K ${PATH}/.ssh2/id_rsa_2048_b $* 

export GIT_SSH = ${PATH}/ssh.bash 
+0

cambia il percorso e il file in modo che corrisponda al tuo, Jenkins Git Plugin esporterebbe GIT_SSH, ma potrebbero esserci alcuni bug in esso. quindi è necessario eseguirlo manualmente. –

Problemi correlati