我正在尝试在jenkins服务器上设置git私有repo。我已经安装了git插件和github。当我在jenkins项目中设置repo 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
到目前为止我做了什么:
我的服务器用户和jenkin用户(两者都在同一台服务器上)不同。虽然在我看来这些并不相关。 jenkins用户被赋予所有信誉。
在var / lib / jenkins / .ssh下的服务器中(.ssh由我创建)我添加了ssh密钥。公钥被添加到github repo。
通过将用户切换到jenkins,我可以通过此ssh克隆项目。所以我认为没有任何公钥添加问题。
我用谷歌搜索了这个问题。有很多解决方案。我尝试了大部分。但仍然没有解决方案。可能我错过了一些东西。
我的回购网址是这样的 git@github.com:回购/ project.git
答案 0 :(得分:2)
如果HOME
设置在/var/lib/jenkins/
,那么我希望您成功完成所有步骤:)
然后你的情况可能会发生一件事。就像使用以下方式切换用户一样:
su jenkins
此命令意味着您切换用户,但主目录将与root用户的主目录相同!
因此,您需要通过确认已切换的特定用户家来切换用户。要这样做,您需要遵循:
su -s /bin/bash jenkins
然后,您需要再次生成ssh公钥或只更新已知主机。这将有效。
答案 1 :(得分:1)
这取决于Jenkins运行时设置的HOME
:git将在$ H OME/.ssh
下查找ssh(公共和私有)密钥。
只需添加一个带有回显$HOME
的构建步骤,并确保您的.ssh
位于该文件夹中。