2011-10-25 54 views
3

我有一个Git的bitbucket存储库,我想让我的Jenkins服务器自动访问。这只能使用公钥/私钥进行验证。所以我创建了一个密钥对并将公钥上传到bitbucket。公钥和私钥位于运行jenkins的tomcat用户的.ssh文件夹中的服务器上。当我以该用户在服务器上登录时,我能够克隆我的项目。如何从jenkins登录到git bitbucket存储库

但是我无法让jenkins实际检查bitbucket中的代码。它总是说:

Permission denied (publickey). 
fatal: The remote end hung up unexpectedly 

嗯,我认为这是因为通过ssh访问资源库时,我需要为我的私钥和詹金斯提供的密码是无法自动做到这一点。我看,这是有可能通过提供包含以下内容的.ssh文件夹内的一个配置文件,以避免beeing要求的密码:

Host bitbucket.org 
    IdentityFile ~/.ssh/id_dsa 

我这样做了,但只要我提供这个文件的我不能再从bitbucket中克隆版本库。甚至不直接从服务器获取如上所示的相同错误消息。

有没有人设法使这个设置工作?我也在这里阅读了下面的线程,这对我来说是没用的:How do i set a private ssh key for hudson/jenkins to access bitbucket?,我检查了tomcat真的在用户tomcat6下运行,创建一个简单地运行“whoami”的空测试项目。所以我几乎没有解决问题的想法。

回答

4

无论您是否必须为ssh密钥提供密码,在您的配置中指定IdentityFile都不会改变。如果确实如此,那将是一个巨大的安全漏洞。您不能要求您为ssh密钥提供密码的唯一方法是如果您的ssh密钥没有密码。

所以,你应该专门为你的jenkins实例创建一个ssh密钥,如果Bitbucket允许的话,只能给你的存储库只读访问权限。

+0

感谢您的帮助。这真正解决了这个问题。 – ali

+0

@ali,尽管jenkins只需要只读访问权限,但是除了使用ssh之外,没有其他方法可以访问存储库吗? – jamessan

+0

nope。 jenkins git插件没有提供其他方法。 – ali

相关问题