I'm creating a job in Jenkins 2.152 running on Windows Server 2016 which needs to pull from a git repo hosted on bitbucket.org. I tested the ssh key through git-bash so I know it works and there is no passphrase. When I try to use the very same private key with Jenkins I get an error message.
Failed to connect to repository : Command "git.exe ls-remote -h
git@bitbucket.org:mygroup/myrepo HEAD" returned status code 128:
stdout:
stderr: Load key
"C:\\Users\\JE~1\\AppData\\Local\\Temp\\ssh2142299850576289882.key": invalid format
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The Credentials are set up as
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
I noticed that on another Windows Jenkins server the private key has a different number of characters per line
Does anybody know what is the expected format of Private Key in Jenkins Credentials? Or maybe there is something else that I could check.
Any help is greatly appreciated.
Check the version of Git for Windows that you are using: Starting 2.19.2, it comes with OpenSSH v7.9p1 (from 7.7 before)
And... openssh 7.8 just changed the default ssh-keygen format, from a classic PEM 64-chars, to an OPENSSH one 70 chars!
Only
ssh-keygen -m PEM -t rsa -P "" -f afile
would generate the old format (-m PEM
)In the end, I couldn't find a way to make pasting private keys to Jenkins credentials work.
While it might common knowledge for many, I decided to put the workaround below anyway.
Here is what I did as a workaround to pull my private repositories from Bitbucket.org:
ssh-keygen
command accepting all defaultsNone
This way Git and SSH will be able to find SSH keys in the default location, which usually is c:\Users\username.ssh\
Hope this helps somebody.
I also got this error message and eventually found out that the Jenkins credential should be RSA secret key, not public key. Below is my steps for configuring Jenkins to clone from bitbucket:
Somehow I got it work again but the real steps that fix the issue is unclear.
what I did is to regenerate the ssh key again and put everything to its default location. Reupload the public key, replace the private key in the credential and then it starts to work.