web-dev-qa-db-fra.com

Gestion des clés SSH dans Jenkins pour Git

J'essaie de faire fonctionner Jenkins avec un référentiel hébergé par GitHub (en utilisant le plugin Jenkins Git). Le référentiel a plusieurs sous-modules git, je ne suis donc pas sûr de vouloir essayer de gérer plusieurs clés de déploiement.

Mon compte personnel GitHub est un collaborateur de chacun des projets que je souhaite intégrer à Jenkins. J'ai donc généré une clé SSH dans /var/lib/jenkins/.ssh et l'a ajouté à mon compte personnel GitHub.

Cependant, lorsque j'essaie d'ajouter l'URL du référentiel à la configuration de mon projet Jenkins, je reçois:

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

De même, lorsque je planifie une construction, je reçois:

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

J'ai également essayé de configurer un fichier de configuration SSH comme indiqué ici , mais en vain.

Quelqu'un peut-il nous éclairer? Merci

[~ # ~] éditer [~ # ~]

Je devrais ajouter que je suis en cours d'exécution CentOS 5.8

53
James

Il semble que le github.com L’hôte auquel Jenkins tente de se connecter ne figure pas dans la liste des utilisateurs Jenkins $HOME/.ssh/known_hosts. Jenkins fonctionne sur la plupart des distributions en tant qu'utilisateur jenkins et a donc son propre .ssh répertoire pour stocker la liste des clés publiques et known_hosts.

La solution la plus simple à laquelle je puisse penser pour résoudre ce problème est la suivante:

# 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
63
Tuxdude

Avez-vous essayé de vous connecter en tant qu'utilisateur jenkins?

Essaye ça:

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

Souvent, vous rencontrez un échec si l'hôte n'a pas été ajouté ou autorisé (par conséquent, je me connecte toujours manuellement en tant que hudson/jenkins lors de la première connexion à github/bitbucket), mais le lien que vous avez inclus est censé y remédier.

Si cela ne fonctionne pas, essayez de recopier la clé. Assurez-vous que c'est la clé de publication (c'est-à-dire id_rsa.pub). Peut-être avez-vous manqué des personnages?

6
Adam Gent

Selon ce article , vous pouvez essayer la commande suivante:

   ssh-add -l

Si votre clé ne figure pas dans la liste,

   ssh-add /var/lib/jenkins/.ssh/id_rsa_project
4
RabitChang

Cela fonctionne pour moi si vous avez la configuration et le fichier de clé privée dans /Jenkins/.ssh/, vous devez chown (changer de propriétaire) pour ces 2 fichiers puis redémarrer jenkins afin que l’instance jenkins lise ces 2 fichiers.

1
Jianhong