在Jenkins服务器上设置Git私有仓库项目

6

我想在Jenkins服务器上设置Git私有仓库。我已经安装了Git插件和GitHub插件。当我在Jenkins项目界面中设置仓库URL时,出现了以下错误:

Failed to connect to repository : Command "git -c core.askpass=true 
ls-remote -h git@github.com:repo/project.git HEAD" returned 
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedl

目前我所做的事情:

  1. 我的服务器用户和Jenkins用户(两者都在同一台服务器上)是不同的。虽然我觉得这些似乎没有关联,但Jenkins用户已被授予所有凭据。

  2. 在我的服务器上,在var/lib/jenkins/.ssh下(由我创建),我添加了SSH密钥。公钥已添加到GitHub仓库中。

  3. 通过切换到Jenkins用户,我可以使用此SSH克隆项目。因此,我认为没有任何公钥添加问题。

我已经在Google上搜索了这个问题。有很多解决方案。我尝试了大部分解决方案。但仍然没有解决方案。可能我漏掉了什么。

我的仓库URL类似于 git@github.com:repo/project.git

2个回答

2
如果您的HOME设置在/var/lib/jenkins/,那么我希望您已经成功完成了所有步骤:)
然后,在您使用以下命令切换用户时,可能会发生一件事情:
su jenkins 

这个命令的意思是你切换用户,但是家目录还是和root用户相同。

所以,如果你想切换用户并且确保特定用户的家目录也被切换了,你需要按照以下步骤操作:

su -s /bin/bash jenkins

那么您需要重新生成ssh公钥,或者只是更新已知主机。这样就可以工作了。

相关链接


1
这取决于Jenkins运行时HOME的设置:git将在$HOME/.ssh下查找ssh(公钥和私钥)。只需添加一个echo $HOME的构建步骤,并确保您的.ssh位于该文件夹中即可。

谢谢您的回复。我已经检查了我的Jenkins用户主目录,但没有找到SSH密钥。我在/var/lib/jenkins/.ssh下创建了这个SSH密钥。那么,我应该在home/jenkins/.ssh目录下创建它吗?顺便说一下,我发现jenkins用户主目录中没有像jenkins/.ssh这样的目录。 - Sazzad
@Sazzad 首先,请确认 Jenkins 运行时 $HOME 是否设置为 /var/lib/jenkins/ - VonC
@Sazzad,请运行一个包含一个构建步骤的简单作业,其中包括一个 echo $HOME 命令。只要你不知道 HOME 的位置,猜测也没有意义。 - VonC
echo $HOME 返回 /var/lib/jenkins。那接下来应该怎么做呢?你能为我推荐一些参考资料吗? - Sazzad
我可以向您展示完整的控制台输出,由Jenkins用户启动 正在工作区/var/lib/jenkins/jobs/test terminal/workspace构建 [workspace] $ /bin/sh -xe /tmp/hudson2657983803941902767.sh
  • echo /var/lib/jenkins /var/lib/jenkins 已完成:成功
- Sazzad
显示剩余3条评论

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