Дженкінс повернув код стану 128 за допомогою github


74

За допомогою команди GitHub я маю:

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

Мій зв’язок з GitHub нормальний (немає проблем), але з Дженкінсом у мене така помилка:

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

Це проблема з відкритим ключем?

Я використовую Jenkinsпід Tomcat 7/ Ubuntu 12.

Відповіді:


55

Ця помилка:

stderr: Дозвіл відхилено (publickey). фатально: віддалений кінець несподівано повісився

вказує на те, що Дженкінс намагається підключитися до github за допомогою неправильної клавіші ssh.

Ти повинен:

  1. Визначте користувача, який jenkins працює як, наприклад. 'build' або 'jenkins'
  2. Увійдіть на хост jenkins, який намагається виконати клон, тобто не входити в майстер, якщо вузол насправді виконує збірку.
  3. Спробуйте ssh до github - якщо він не вдається, вам потрібно додати відповідний ключ до /.ssh

Я не маю доступу до входу до майстра, але я створив нову роботу Дженкінса, і це вирішило мою проблему.
Вішрант

14

Для перевірки є наступні:

  1. якщо правильний відкритий ключ (id_rsa.pub) завантажений на git-сервер.
  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.


Пункт 3 цієї відповіді спеціально вирішив моє питання. Однією з пропозицій, яку я хотів би додати, є переконатися, що подано su jenkins, щоб елемент 3 змінив / створив правильний файл known_hosts для облікового запису jenkins. Я зробив це , запустивши Sudo су -s / bin / Баш Дженкінс як на інформації , наданої в stackoverflow.com/a/18081006/291612
Jeff M

stackoverflow.com/questions/44522862/... я отримую іншу помилку .. і папка jenkins не існує всередині папки var / lib .. може хтось допомогти
Kumar Kalluri

6

Також переконайтеся, що ви використовуєте ssh github url, а не https


Ви можете, будь ласка, розширити це? Чому https працює нормально під час виконання завдання, але тайм-аут під час опитування?
Novaterata

@Novaterata існує два протоколи, з якими Git може працювати, спілкуючись між сервером та клієнтськими машинами: HTTPS та SSH. Обидва використовують різні формати URL-адрес та облікові дані для автентифікації.
starscream_disco_party

@starscream_disco_party Я розумію це, яке відношення це має до того, чому час http вичерпується під час опитування
Novaterata

4

У моєму випадку мені довелося додати відкритий ключ до свого репо (на Bitbucket) І використати git clone один раз через ssh, щоб відповісти так на запитання "відомого хоста" вперше.


3

у мене колись тому було те саме питання. переконайтеся, що ваш ключ ssh не має пароля, і використовуйте не загальний обліковий запис користувача (наприклад, краще для облікового запису користувача, який називається jenkins або близько того).

перевірте наступну статтю http://fourkitchens.com/blog/2011/09/20/trigger-jenkins-builds-pushing-github



-1

Я видалив свій проект (кореневу папку) і створив його знову. Це був найшвидший і найпростіший спосіб у моєму випадку.

Не забудьте зберегти всі зміни, перш ніж видалити проект!


-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. Тож рішення було просто підштовхнути мої зміни

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.