Jenkins如何通过SSH访问私有BitBucket仓库

9
我遇到了一个问题,就是无法让Jenkins通过SSH从BitBucket上克隆git仓库。它会失败并显示下面的错误信息:
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

所采取的步骤

  • 创建SSH密钥对。
  • 将公钥作为部署密钥添加到BitBucket上的仓库中。
  • 在Jenkins凭据管理器插件中安装SSH密钥和用户名(已尝试使用“git”和我的BB帐户名)。
  • 尝试使用以下形式的URL在构建中克隆存储库:

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

我还尝试过不使用凭据管理器,手动将密钥安装在/var/log/jenkins/.ssh/中,但是没有成功。

有什么想法我做错了吗?


克隆是否能够从命令行工作?Jenkins 可能正在以用户“jenkins”运行,这可能与您尝试克隆的用户不同... Jenkins 必须作为您上传密钥的“用户”运行... - Shunya
实际上不是这样的 - 原来是防火墙问题。感谢您的帮助。 - user2424511
值得一提的是,将我的用户帐户的密钥复制到/var/lib/jenkins/.ssh目录下,帮助我解决了类似的问题。 - austinmarton
2个回答

8
正如@user1562655所建议的那样,克隆失败是由于另一个问题 — 在这种情况下,防火墙阻止了22号端口上的ssh传出连接。
解决方法是使用443号端口(因为服务器允许此端口),并使用不同的BitBucket URL。
ssh://git@altssh.bitbucket.org:443/<user>/<repo>.git

… 而非

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

更多有关该方案的信息可在此处查看:

使用SSH协议连接Bitbucket-在端口443上使用SSH


1
另外,需要澄清的是:SSH 凭据插件确实可以提供相关密钥给构建器;因此无需在 Jenkins 的“~/.ssh”目录下手动安装它。 - user2424511
Atlassian文档现在位于此处:https://confluence.atlassian.com/bitbucket/troubleshoot-ssh-issues-271943403.html - meh
同时...不是.git...以/结尾。例如:ssh://git@altssh.bitbucket.org:443/<user>/<repo>/ - meh
@user2424511 提供的链接已失效。 - James Cazzetta

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接