My Jenkins instance was failing to connect to a git repository using a supplied username and private key. The Credentials plugin appeared to be getting confused. I hope the following can help others avoid a bit of head banging against your desk.
Issue:
Failed to connect to repository : Command "ls-remote -h ssh://myuser@repo HEAD" returned status code 128:
stderr: Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
fatal: The remote end hung up unexpectedly
Discussion:
In my situation the Jenkins instances is pointing to several different repositories (svn and git)
The connection to the svn repository uses svn+ssh. The connection to the git repository ,using ssh, was failing. It appears that the Jenkins instance is having trouble figuring out which credentials to use or private key to use.
Solution:
The solution is to define the private key to use for the user that is failing. I found the solution here at: stackoverflow then modified for my situation.
Create a JENKINS_HOME/.ssh/config file to point to the correct private key.
Set permissions to 600 ( rw------- )
Set the contents of the file to:
Host source.server.com
HostName 123.456.789.012
User myuser
IdentityFile /home/jenkins/.ssh/id_rsa
Where: Host: Can be anything is it just a place holder I generally use the DNS name
or short name of the server.
HostName: IP addresss or fully qualified domain name if you have DNS
enabled on your network
User: The user that will be connecting to the repo
IdentityFile: The ssh private key that will be used to connect to the repository.
In my case the user and key are not the jenkins user and id_rsa.
Finally:
You must add the public key to your known_hosts file. The easiest way to add this is to execute: ssh myuser@source.server.com
Then answer yes.
Alternatively if you have the public key you can directly edit your known_hosts file and paste the public key to the bottom of the file.
What if you don't have access to $JENKINS_HOME, because it's a hosted server?
ReplyDeleteI copied the private key into Jenkins directly, but it still doesn't work. Any ideas?
http://stackoverflow.com/questions/28543482/jenkins-git-parameter-plugin-cannot-fetch-tags