Jenkins使用github返回了状态码128


74

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

Answers:


55

这个错误:

stderr:权限被拒绝(公钥)。致命:远端意外挂断

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

你应该:

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

我无权访问主服务器的登录名,但是我创建了一个新的Jenkins作业,从而解决了我的问题。
Vishrant

14

检查以下内容:

  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

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


该答案的第3项专门解决了我的问题。我要补充的一项建议是确保对詹金斯使用su,以便项目3可以更改/创建詹金斯帐户的正确的known_hosts文件。我这样做,通过运行sudo的苏-s /斌/庆典詹金斯按照信息中提供stackoverflow.com/a/18081006/291612
杰夫中号

stackoverflow.com/questions/44522862/…我收到了不同的错误..并且var / lib文件夹内没有jenkins文件夹..任何人都可以帮忙吗
Kumar Kalluri

6

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


您能对此进行扩展吗?为什么https在运行作业时工作正常,但在轮询期间超时?
Novaterata,

@Novaterata在服务器和客户端计算机之间进行通信时,Git可以使用两种协议:HTTPS和SSH。两者都使用不同的URL格式和凭据进行身份验证。
starcream_disco_party

@starscream_disco_party我了解,这与为何HTTP在轮询时超时有关
Novaterata,

4

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





-2

当我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。所以解决方案是推动我的改变

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.