Jenkins使用github返回状态码128

时间:2013-05-23 18:47:40

标签: github jenkins

使用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

为什么这个问题与publickey有关 我在TomCat7 / ubuntu 12下使用jenkins 请帮忙

9 个答案:

答案 0 :(得分:44)

此错误:

  

stderr:权限被拒绝(publickey)。致命的:远程端挂了   出乎意料

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

你应该:

  1. 确定jenkins运行的用户,例如。 'build'或'jenkins'
  2. 登录尝试进行克隆的jenkins主机 - 也就是说,如果某个节点实际正在进行构建,请不要登录到主服务器。
  3. 尝试使用ssh到github - 如果失败,则需要将正确的密钥添加到/.ssh

答案 1 :(得分:11)

要检查以下内容:

  1. 如果将正确的公钥(id_rsa.pub)上传到git-server。
  2. 如果将右私钥(id_rsa)复制到/var/lib/jenkins/.ssh /
  3. 如果在〜/ .ssh文件夹中创建了known_hosts文件。尝试ssh -vvv git@github.com查看调试日志。如果事情进展顺利,github.com将被添加到known_hosts。
  4. 如果id_rsa的权限设置为700(chmod 700 id_rsa
  5. 完成所有检查后,请尝试ssh -vvv git@github.com

答案 2 :(得分:4)

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:2)

还要确保使用ssh github网址而不是https

答案 5 :(得分:0)

我删除了我的项目(根文件夹)并再次创建它。在我的案例中,这是最快最简单的方式。

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

当我从詹金斯那里收到类似的status code 128错误时:

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。所以解决方案是只推送我的更改

答案 8 :(得分:-1)

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