Jenkins access private BitBucket repo over SSH

2020-02-29 00:26发布

问题:

I'm having trouble getting Jenkins to clone a git repository on BitBucket via SSH. It's failing with the following message:

Building in workspace /var/lib/jenkins/workspace/test
[ssh-agent] Using credentials git (git@bitbucket.org:<user>/<repo>.git)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Java/JNR ssh-agent
[ssh-agent] Started.
Checkout:test / /var/lib/jenkins/workspace/test - hudson.remoting.LocalChannel@2b619bca
Using strategy: Default
Fetching changes from 1 remote Git repository
Fetching upstream changes from origin
ERROR: Problem fetching from origin / origin - could be unavailable. Continuing anyway
hudson.plugins.git.GitException: Command "git fetch -t origin +refs/heads/*:refs/remotes/origin/*" returned status code 128:
stdout: 
stderr: ssh: connect to host bitbucket.org port 22: Connection refused
fatal: The remote end hung up unexpectedly

Steps taken

  • Create an SSH keypair
  • Add the public key as a deployment key for the repository on BitBucket
  • Install the SSH key and username (have tried both 'git' and my BB account name) in the Jenkins Credentials manager plugin
  • Attempt to clone the repository in the build using a URL in form of

    git@bitbucket.org:<user>/<repo>.git

I've also tried not using the credentials manager and manually installing the keys in /var/log/jenkins/.ssh/, but to no avail.

Any ideas what I'm doing wrong?

回答1:

As @user1562655 suggested out, the clone was failing due to another issue -- in this case the firewall was blocking outgoing ssh on port 22.

The fix was to use port 443 (as the server allows this), and a different BitBucket URL:

ssh://git@altssh.bitbucket.org:443/<user>/<repo>.git

…instead of

ssh://git@bitbucket.org:<user>/<repo>.git

More info on the scheme is available here:

UsetheSSHprotocolwithBitbucket-SSHonPort443