Je crée un travail sous Jenkins 2.152 fonctionnant sous Windows Server 2016 et devant être extrait d'un dépôt Git hébergé sur bitbucket.org . . Lorsque j'essaie d'utiliser la même clé privée avec Jenkins, je reçois un message d'erreur.
Failed to connect to repository : Command "git.exe ls-remote -h
[email protected]:mygroup/myrepo HEAD" returned status code 128:
stdout:
stderr: Load key
"C:\\Users\\JE~1\\AppData\\Local\\Temp\\ssh2142299850576289882.key": invalid format
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Les informations d'identification sont configurées comme
scope: Global
user: git
Private Key -> Enter Directly -> copy and past - generated by ssh-keygen -t rsa in gitbash
Passphrase: empty
ID: empty
description: bitbucket.org
J'ai remarqué que sur un autre serveur Windows Jenkins, la clé privée comporte un nombre différent de caractères par ligne.
Quelqu'un sait-il quel est le format attendu de la clé privée dans les informations d'identification Jenkins? Ou peut-être qu'il y a autre chose que je pourrais vérifier.
Toute aide est grandement appréciée.
Vérifiez la version de Git pour Windows que vous utilisez: Démarrage 2.19.2 , il est livré avec OpenSSH v7.9p1 (à partir de 7.7 auparavant)
Et ... openssh 7.8 vient de changer le format par défaut de ssh-keygen, d’un PEM classique à 64 caractères, à un format OPENSSH de 70 caractères!
Seul ssh-keygen -m PEM -t rsa -P "" -f afile
générerait l'ancien format (-m PEM
)
ssh-keygen(1)
:écrire des clés privées au format OpenSSH par défaut au lieu d'utiliser le format PEM d'OpenSSL.
Le format OpenSSH, pris en charge dans les versions OpenSSH depuis 2014 et décrit dans le fichier
PROTOCOL.key
de la distribution source, offre une protection considérablement améliorée contre les tentatives de mot de passe hors connexion et prend en charge les commentaires de clé dans les clés privées.
Si nécessaire, il est possible d'écrire d'anciennes clés de style PEM en ajoutant "-m PEM
" aux arguments de ssh-keygen lors de la génération ou de la mise à jour d'une clé.
J'ai également reçu ce message d'erreur et découvert que les informations d'identification Jenkins doivent être une clé secrète RSA, et non une clé publique. Ci-dessous, voici mes étapes pour configurer Jenkins pour cloner à partir de bitbucket:
Kind: SSH username and private key Scope: Global Username: <my username in bitbucket> Private key: <Enter directly> -----BEGIN RSA PRIVATE KEY----- ...... -----END RSA PRIVATE KEY-----
En fin de compte, je ne pouvais pas trouver un moyen de faire fonctionner le collage de clés privées sur les informations d'identification Jenkins.
Bien que cela puisse être bien connu pour beaucoup, j'ai quand même décidé de mettre la solution de contournement au-dessous.
Voici ce que j'ai fait comme solution de contournement pour extraire mes référentiels privés de Bitbucket.org:
ssh-keygen
acceptant toutes les valeurs par défaut.None
.De cette façon, Git et SSH pourront trouver les clés SSH à l’emplacement par défaut, c:\Users\username.ssh \
J'espère que ça aide quelqu'un.