Voici ma configuration:
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).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 )
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:
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 )
Laisser la phrase secrète vide
J'ai contourné ce problème en laissant simplement la phrase secrète vide lors de la création des clés.
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:
ssh -vvv [email protected]
(changez d’adresse en fonction de votre serveur git)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/*
À vérifier sont les suivants:
Après toutes les vérifications -> essayez ssh -vvv [email protected] N'essayez pas de config en jenkins jusqu'à ce que ssh fonctionne!
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.
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.