web-dev-qa-db-fra.com

Autorisation refusée (clé publique) lors de l'extraction de GitHub avec l'utilisateur Jenkins sous Ubuntu

Voici ma configuration:

  1. Jenkins tourne sur ma machine Linux en tant qu'utilisateur 'jenkins'.
  2. J'ai généré une paire de clés ssh comme décrit dans Linux - Setup Git , pour l'utilisateur 'jenkins'.
  3. Lorsque je Sudo su jenkins et que j'essaie ssh -vT [email protected], on me demande toujours ma phrase secrète, mais je finis toujours par être authentifié. (l'option verbeuse indique quelle clé est utilisée, entre autres).
  4. Je pourrais cloner mon dépôt de GitHub en utilisant Jenkins:

Ainsi:

jenkins@alpm:~/jobs/test git/workspace$ git pull 
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.

Jusqu'à présent, j'ai suivi les instructions à la lettre. Le problème est que le travail Jenkins échoue avec l'erreur suivante:

status code 128:
stdout: 
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

C'est la même erreur que lorsque je tape la phrase secrète (mais bien sûr, Jenkins ne me demande pas la phrase secrète). Les pages suivantes:

indiquez-moi que ssh-agent pourrait aider à retenir la phrase secrète, ce qui est le cas lorsque j'utilise mon propre utilisateur, mais pas le jenkins id Notez que lors de l'exécution en tant que mon utilisateur normal donne:

echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh

Tout en exécutant la même commande que mon "Jenkins" ne donne rien (pas même la permission refusée)

Ma compréhension du problème est que la phrase de passe n'est pas mémorisée . Avez-vous une idée? Est-ce que je dois démarrer un gestionnaire ssh-agent ou un jeu de clés pour l'utilisateur jenkins? Comment? Ou le transfert ssh est-il approprié lors du transfert vers la même machine? Une idée plus brillante?

ps: je n'ai jamais Sudo gitted, j'ai toujours utilisé Jenkins ou mon compte d'utilisateur (comme mentionné dans ce SO message - Problème de clé SSH Ubuntu/GitHub )

30
pimajor

Puisque personne n’a écrit la réponse des commentaires pendant plusieurs mois, je le ferai rapidement.

Il y a 2 problèmes/solutions possibles:

  1. id_rsa créé avec un mauvais utilisateur

    Créez id_rsa en tant qu'utilisateur jenkins (voir hudson ne peut pas extraire du référentiel git )

  2. Laisser la phrase secrète vide

39
Patrick Boos

J'ai contourné ce problème en laissant simplement la phrase secrète vide lors de la création des clés.

8
Marco Corona

Pour résumer ce qui doit être fait sur le serveur Jenkins:

# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/

# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""

# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*

Rappelles toi:

  • Veuillez conserver le nom par défaut "id_rsa" lors de la génération des clés, car d'autres, telles que "id_rsa_jenkins" ne fonctionneront pas, même si elles sont correctement configurées.
  • N'utilisez pas de phrase de passe pour votre clé
  • Vérifiez que la clé publique (id_rsa.pub) a été téléchargée sur le serveur git (GitHub, Bitbucket, etc.). Ceci fait, testez votre clé SSH en lançant: ssh -vvv [email protected] (changez d’adresse en fonction de votre serveur git)
7
Paul Podgorsek

J'ajouterais que si vous avez créé les clés à la main, elles pourraient toujours appartenir à vous et ne pas être lisibles par Jenkins, essayez:

Sudo chown jenkins -R /var/lib/jenkins/.ssh/*
3
stoyan

À vérifier sont les suivants:

  1. si la clé publique de droite (id_rsa.pub) est chargée sur le serveur git.
  2. l'utilisateur jenkins aura accès à github -> à CHECKsi la clé privée droite (id_rsa) est copiée dans /var/lib/jenkins/.ssh/
  3. si le fichier known_hosts est créé dans le dossier ~/.ssh. Essayez ssh -vvv [email protected] pour voir les journaux de débogage. Si tout se passe bien, github.com sera ajouté à known_hosts.
  4. si l'autorisation de id_rsa est définie sur 755 (chmod 755 id_rsa)

Après toutes les vérifications -> essayez ssh -vvv [email protected] N'essayez pas de config en jenkins jusqu'à ce que ssh fonctionne!

2
Tim Long

Si vous exécutez jenkins en tant que service dans Windows, vous devez vérifier l'utilisateur qui exécute le service . Si vous avez créé les clés à l'aide de l'utilisateur "MACHINENAME\user", modifiez le service afin que l'utilisateur qui l'exécute puisse correspondre.

1

les clés doivent être générées par l'utilisateur jenkins.

Sudo su jenkins
ssh-keygen

une fois que la clé est générée, elle devrait être ajoutée en tant que clé ssh dans bitbucket ou github.

0
blazehub