无法从jenkins访问git repo

时间:2016-02-03 09:55:54

标签: linux git github jenkins ssh

我在Linux机器上配置了Jenkins,而我的git repo在另一台Linux服务器上。但是,当我尝试将回购的URL提供给Jenkins时,我收到以下错误。

Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h ssh://user@ip/~/export1 HEAD" returned status code 128:
stdout: 
stderr: Permission denied, please try again. 
Permission denied, please try again. 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

原因可能是什么?

我已经看到这两个系统' rsa密钥存在于彼此的.ssh/known_hosts文件夹中 我能够将代码中的代码拉出或克隆到Jenkins系统中的文件夹中。那么詹金斯为什么不能接受呢? 我还尝试了网址user@ip:/fullpath/to/repo

3 个答案:

答案 0 :(得分:2)

您需要确保Jenkins作为正确的用户(在~/.ssh/id_rsa(.pub)

中拥有密钥的用户)运行

该用户可能与ssh url中使用的用户不同:user @ ip表示您使用在~user/.ssh/authorized_key中拥有公钥的帐户连接到ip。

所以Jenkins进程必须由具有私钥和公钥的帐户运行,其公钥在git服务器端的~user/.ssh/authorized_key。 并且该帐户应该在任何ssh尝试之前完成(仅一次)ssh-keyscan -H ip >> ~account/.ssh/known_hosts,以便将git服务器ip记录为已知主机。

  

这是一个简单的回购是否会对URL产生任何影响或改变?

没有。当用作URL时,裸仓库文件夹末尾的.git是可选的。

答案 1 :(得分:0)

除了@ VonC的回复之外,您还可以使用Credentials plugin在Jenkins主服务器上定义一组凭据,Jenkins作业使用这些凭据来访问您的Git存储库。这允许您将Jenkins本身作为可以访问Git存储库的用户运行。

答案 2 :(得分:0)

主要问题是系统的安全性。我没有检查我的服务器上的身份验证机制。对git服务器的密码验证导致了问题,因为jenkins机器试图直接触发路径的ls-remote。当您在终端上执行相同操作时,系统将提示您输入密码然后接受。当我将密码身份验证和UsePAM设置为no并在sshd_config文件中启用RSA身份验证,pubkey身份验证和授权密钥设置为yes并重新启动时,它能够访问repo并且我得到此错误。