90

使用 GitHub 命令我有:

ssh -T git@github.com
Hi (MyName)! You've successfully authenticated, but GitHub does not provide shell access.

我与 GitHub 的连接没问题(没问题),但与 Jenkins 我有这个错误:

ERROR: Error cloning remote repo 'origin' : Could not clone git@github.com:Name-MysRepo/MyRepo.git
hudson.plugins.git.GitException: Could not clone git@github.com:Name-MysRepo/MyRepo.git
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.clone(CliGitAPIImpl.java:219)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:1001)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:942)
    at hudson.FilePath.act(FilePath.java:904)
    at hudson.FilePath.act(FilePath.java:877)
    at hudson.plugins.git.GitSCM.determineRevisionToBuild(GitSCM.java:942)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1101)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1369)
    at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:676)
    at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:88)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:581)
    at hudson.model.Run.execute(Run.java:1575)
    at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:241)
Caused by: hudson.plugins.git.GitException: Command "git clone --progress -o origin git@github.com:Name-MysRepo/MyRepo.git /root/.jenkins/jobs/TestKRGDAOV01/workspace" returned status code 128:
stdout: Cloning into '/root/.jenkins/jobs/TestKRGDAOV01/workspace'...

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

这是公钥的问题吗?

JenkinsTomcat 7/下使用Ubuntu 12

4

9 回答 9

64

这个错误:

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

表示 Jenkins 正在尝试使用错误的 ssh 密钥连接到 github。

你应该:

  1. 确定 jenkins 运行的用户,例如。“构建”或“詹金斯”
  2. 在尝试进行克隆的 jenkins 主机上登录 - 也就是说,如果节点实际上正在执行构建,请不要登录到主服务器。
  3. 尝试 ssh 到 github - 如果失败,则需要将正确的密钥添加到<jenkins user home>/.ssh
于 2013-11-20T13:50:31.723 回答
18

要检查以下内容:

  1. 如果正确的公钥(id_rsa.pub)被上传到 git-server。
  2. 如果正确的私钥(id_rsa)被复制到 /var/lib/jenkins/.ssh/
  3. 如果 known_hosts 文件是在 ~/.ssh 文件夹中创建的。尝试ssh -vvv git@github.com查看调试日志。如果一切顺利,github.com 将被添加到 known_hosts。
  4. 如果 id_rsa 的权限设置为 700 ( chmod 700 id_rsa)

完成所有检查后,尝试ssh -vvv git@github.com.

于 2015-11-20T13:19:18.353 回答
8

还要确保您使用 ssh github url 而不是 https

于 2018-02-01T16:11:33.380 回答
5

在我的情况下,我必须将公钥添加到我的存储库(在 Bitbucket),并通过 ssh 使用 git clone 一次以第一次回答“已知主机”问题。

于 2015-10-22T08:02:22.650 回答
3

我前段时间有同样的问题。确保您的 ssh 密钥没有密码并且使用不常用的用户帐户(例如,最好使用名为 jenkins 的用户帐户)。

检查以下文章http://fourkitchens.com/blog/2011/09/20/trigger-jenkins-builds-pushing-github

于 2013-09-02T21:00:25.427 回答
0

status code 128当我从 Jenkins收到类似的错误时:

status code 128:
stdout: 
stderr: fatal: Couldn't find remote ref refs/heads/jenkins

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:2172)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandWithCredentials(CliGitAPIImpl.java:1864)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.access$500(CliGitAPIImpl.java:78)
    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl$1.execute(CliGitAPIImpl.java:545)
    at jenkins.plugins.git.GitSCMFileSystem$BuilderImpl.build(GitSCMFileSystem.java:358)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:197)
    at jenkins.scm.api.SCMFileSystem.of(SCMFileSystem.java:173)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:113)
    at org.jenkinsci.plugins.workflow.cps.CpsScmFlowDefinition.create(CpsScmFlowDefinition.java:67)
    at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:299)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)
Finished: FAILURE

这是因为我没有推送我的新分支"jenkins",它有我的Jenkinsfile. 所以解决方案就是推动我的改变

于 2019-09-17T15:16:02.560 回答
-1

我删除了我的项目(根文件夹)并再次创建它。就我而言,这是最快和最简单的方法。

在删除项目之前,不要忘记保存所有更改!

于 2016-06-16T09:31:34.123 回答
-1

我首先有另一个凭证,然后当我删除它并创建一个新凭证时,我遇到了同样的错误。我必须去每个项目,并选择新的凭据。

于 2021-03-30T15:32:05.027 回答
-2

我将 .ssh/id_rsa(私钥)的权限更改为 604。 chmod 700 id_rsa

于 2018-05-23T10:04:54.640 回答