如何从Jenkins登录Git Bitbucket代码仓库

3
我在Bitbucket上有一个GIT代码库,我希望我的Jenkins服务器可以自动访问它。这只能通过公钥/私钥认证来实现。所以我创建了一对密钥,并将公钥上传到了Bitbucket。公钥和私钥都在运行Jenkins的Tomcat用户的.ssh文件夹中。当我以该用户登录服务器时,我能够克隆我的项目。
然而,我无法让Jenkins从Bitbucket中实际检出代码。它总是显示:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我认为这是因为通过ssh访问仓库时,需要提供我的私钥密码,而jenkins无法自动完成此操作。我阅读到可以在.ssh文件夹中提供一个配置文件来避免被要求输入密码,其内容如下:
Host bitbucket.org
    IdentityFile ~/.ssh/id_dsa

我这样做了,但是一旦我提供了那个文件,我就无法从bitbucket克隆存储库。甚至直接从服务器获取,也会得到与上面显示的相同的错误消息。
有人成功地使这个设置工作了吗?我还阅读了stackoverflow上的以下主题,对我没有用:如何为hudson / jenkins设置私有ssh密钥以访问bitbucket? 我检查了tomcat是否真的在用户tomcat6下运行,通过创建一个简单运行"whoami"的空测试项目来验证。所以我几乎没有任何修复问题的想法。
2个回答

5
在您的配置文件中指定IdentityFile并不会改变您是否需要为ssh密钥提供密码。如果这样做,那将是一个巨大的安全漏洞。唯一的方法是,如果您的ssh密钥没有密码,那么您就不需要为其提供密码。
因此,您应该为您的Jenkins实例创建一个专门的ssh密钥,并且如果Bitbucket允许,只为该密钥提供对您的存储库的只读访问权限。

@ali,虽然如果Jenkins只需要只读访问权限,难道没有其他方法可以访问您的存储库而不使用SSH吗? - jamessan

1

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