Estoy usando gerrit para la revisión de código y uso el complemento de replicación para mantener el repository en synchronization con github.com.
Pero, la replicación no está funcionando. Me arroja un error:
[2014-01-16 11:23:04,694] ERROR com.googlesource.gerrit.plugins.replication.ReplicationQueue : Cannot replicate to git@github.com:visitvinoth/gerrit_prj_1.git org.eclipse.jgit.errors.TransportException: git@github.com:visitvinoth/gerrit_prj_1.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:468) at com.googlesource.gerrit.plugins.replication.PushOne.doPushAll(PushOne.java:416) at com.googlesource.gerrit.plugins.replication.PushOne.generateUpdates(PushOne.java:409) at com.googlesource.gerrit.plugins.replication.PushOne.pushVia(PushOne.java:357) at com.googlesource.gerrit.plugins.replication.PushOne.runImpl(PushOne.java:340) at com.googlesource.gerrit.plugins.replication.PushOne.runPushOperation(PushOne.java:267) at com.googlesource.gerrit.plugins.replication.PushOne.access$000(PushOne.java:78) at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:240) at com.googlesource.gerrit.plugins.replication.PushOne$1.call(PushOne.java:237) 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:237) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:360) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:724) Caused by: com.jcraft.jsch.JSchException: reject HostKey: github.com at com.jcraft.jsch.Session.checkHost(Session.java:780) at com.jcraft.jsch.Session.connect(Session.java:342) at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116) ... 25 more
Ya he registrado la key RSA del usuario gerrit en github.com en mi count.
Cuando bash disparar el command replicar manualmente
ssh -p 29412 vinoth@xxx.xxx.xx.xx gerrit replicate gerrit_prj_1
Me sale el error,
gerrit: replicate: not found
Por favor ayuda
Si tiene acceso al server de Gerrit , puede usar la respuesta de StephenKing y agregar un file ~/.ssh/config
que especificará dónde está la key para usar:
Host github.com User git IdentityFile /path/to/the/private/key StrictHostKeyChecking no UserKnownHostsFile /dev/null
Pero si usó los id_rsa
pnetworkingeterminados id_rsa
e id_rsa.pub
(que deberían haber sido recogidos por ssh), entonces verifique en el mismo server de Gerrit el valor de $HOME
, como mencioné en una respuesta anterior .
Como StephenKing menciona en los comentarios :
La parte del post de error para ayudar a identificar el problema se rechaza HostKey:
github.com
.
Si ssh
no encuentra id_rsa(.pub)
en $HOME/.ssh
, entonces busca un file ~/.ssh/config
con una input " github.com
" que le diga a ssh dónde encontrar el correcto ssh key para conectarse al server representado por " github.com
".
El problema fue:
Desde que comencé a usar gerrit con sudo, estaba ejecutándose como root. ahora cambio y funciona bien
Entonces, si las keys se registraron en un usuario HOME
, no fueron visibles por un process iniciado por la raíz.