2013-06-04 6 views
2

Я настроил репликацию Геррит черезГеррит - Репликация на GitHub

[remote "github"] 
    url = [email protected]:MYUSERNAME/${name}.git 
    push = +refs/heads/*:refs/heads/* 
    push = +refs/tags/*:refs/tags/* 
    timeout = 5 
    replicationDelay = 0 
    authGroup = Administrators 

Я могу войти в GitHub с gerrit2 пользователя, насколько это разрешено с GitHub сайта. Гитуб находится в известных хозяевах. Однако я получаю следующее сообщение об ошибке:

[2013-06-04 20:04:54,472] ERROR com.googlesource.gerrit.plugins.replication.ReplicationQueue : Cannot replicate to [email protected]:MYUSERNAME/All-Projects.git 
org.eclipse.jgit.errors.TransportException: [email protected]:MYUSERNAME/All-Projects.git: reject HostKey: github.com 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:142) 
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121) 
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:248) 
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147) 
    at com.googlesource.gerrit.plugins.replication.PushOne.listRemote(PushOne.java:409) 
    at com.googlesource.gerrit.plugins.replication.PushOne.doPushAll(PushOne.java:357) 
    at com.googlesource.gerrit.plugins.replication.PushOne.generateUpdates(PushOne.java:350) 
    at com.googlesource.gerrit.plugins.replication.PushOne.pushVia(PushOne.java:298) 
    at com.googlesource.gerrit.plugins.replication.PushOne.runImpl(PushOne.java:252) 
    at com.googlesource.gerrit.plugins.replication.PushOne.runPushOperation(PushOne.java:207) 
    at com.googlesource.gerrit.plugins.replication.PushOne.access$000(PushOne.java:71) 
    at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:186) 
    at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:183) 
    at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222) 
    at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201) 
    at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75) 
    at com.googlesource.gerrit.plugins.replication.PushOne.run(PushOne.java:183) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206) 
    at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:337) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: com.jcraft.jsch.JSchException: reject HostKey: github.com 
    at com.jcraft.jsch.Session.checkHost(Session.java:712) 
    at com.jcraft.jsch.Session.connect(Session.java:313) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116) 
    ... 25 more 

Аналогичная проблема для доступа к SSH с

url = ssh://[email protected]:443/MYUSERNAME/${name}.git 

[2013-06-04 21:22:06,072] ERROR com.googlesource.gerrit.plugins.replication.ReplicationQueue : Cannot replicate to ssh://[email protected]:443/MYUSERNAME/All-Projects.git 
org.eclipse.jgit.errors.TransportException: ssh://[email protected]:443/MYUSERNAME/All-Projects.git: reject HostKey: ssh.github.com 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:142) 
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:121) 
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:248) 
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:147) 
    at com.googlesource.gerrit.plugins.replication.PushOne.listRemote(PushOne.java:409) 
    at com.googlesource.gerrit.plugins.replication.PushOne.doPushAll(PushOne.java:357) 
    at com.googlesource.gerrit.plugins.replication.PushOne.generateUpdates(PushOne.java:350) 
    at com.googlesource.gerrit.plugins.replication.PushOne.pushVia(PushOne.java:298) 
    at com.googlesource.gerrit.plugins.replication.PushOne.runImpl(PushOne.java:252) 
    at com.googlesource.gerrit.plugins.replication.PushOne.runPushOperation(PushOne.java:207) 
    at com.googlesource.gerrit.plugins.replication.PushOne.access$000(PushOne.java:71) 
    at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:186) 
    at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:183) 
    at com.google.gerrit.server.util.RequestScopePropagator$5.call(RequestScopePropagator.java:222) 
    at com.google.gerrit.server.util.RequestScopePropagator$4.call(RequestScopePropagator.java:201) 
    at com.google.gerrit.server.git.PerThreadRequestScope$Propagator$1.call(PerThreadRequestScope.java:75) 
    at com.googlesource.gerrit.plugins.replication.PushOne.run(PushOne.java:183) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206) 
    at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:337) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:662) 
Caused by: com.jcraft.jsch.JSchException: reject HostKey: ssh.github.com 
    at com.jcraft.jsch.Session.checkHost(Session.java:712) 
    at com.jcraft.jsch.Session.connect(Session.java:313) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116) 
    ... 25 more 
+0

Если ваша проблема не в All-Projects.git, проверьте, действительно ли это то же сообщение для других проектов. – StephenKing

ответ

4

Войти (через SSH) как пользователь, под которым работает Gerrit.

Я рекомендую вам создать ~/.ssh/config для пользователя Геррит как это:

Host github.com 
    User git 
    IdentityFile /path/to/the/private/key 
    StrictHostKeyChecking no 
    UserKnownHostsFile /dev/null 

Это создает ключ SSH игнорирует предупреждения о (первоначально) неизвестном хозяине.

Если вы можете подключиться через ssh github.com, мы почти там. Затем попробуйте клонировать репозиторий Github, используя URL-адрес SSH.

Впоследствии Gerrit попытается снова воспроизвести.

Плюс тогда я бы рекомендовал удалить authGroup с replication.config.

+0

спасибо большое! У меня установлен доклер GitLab с отображением 2289 на 22. С помощью этой конфигурации мой репликационный плагин Gerrit может реплицировать изменения в GitLab. – runitao

+0

Это решение не работает для моего дела, однако в моем случае вместо github его гитолит. Я установил этот файл ~/.ssh/config и по-прежнему терпит неудачу с помощью той же stacktrace. –

+0

Жаль услышать. Вы можете задать это как отдельный вопрос. – StephenKing

1

Создать группу «Github Экспорт» и дать этой группе доступ на чтение только репозиториях, которые вы хотите экспортировать (или явно запретить доступ для чтения для All-Projects, который является своего рода метапроектом, несущим только настройки, унаследованные другими проектами). Когда вы устанавливаете authGroup = Github Export, экспортируются только те репозиции, к которым эта группа имеет доступ.

Обратите внимание, что поскольку Gerrit 2.5 группа должна быть видимой для всех участников (это настройка группы), вызванная извлечением этой функциональности в плагин. Для этого см. Архив списка Gerrit.

Другой идеей может быть использование this not yet merged patch, что позволяет устанавливать шаблоны для того, какие репозитории вы хотите реплицировать на определенный пульт.

Последним вариантом было бы просто проигнорировать это сообщение об ошибке. Репликация других репозиториев все еще может работать нормально.

+0

К сожалению, это не помогло. Я думаю, что проблема не связана с группами безопасности. Проблема возникает и с реальными проектами. – user1078195

+0

AuthGroup поможет вам предотвратить ошибки репликации в репозиториях, которые не находятся на gitub. – StephenKing

Смежные вопросы