Cómo presionar a gitlab con java api con ssh

Estoy usando gitlab de la versión GitLab Community Edition 9.1.1 d3123f6.

Puedo enviar mi código a gitlab con protocolo http, pero cuando bash con el protocolo git, aparece el siguiente error.

Exception in thread "main" org.eclipse.jgit.errors.UnsupportedCnetworkingentialItem: ssh://git@192......: org.eclipse.jgit.transport.CnetworkingentialItem$YesNoType:The authenticity of host '192......' can't be established. RSA key fingerprint is 99:............... Are you sure you want to continue connecting? at org.eclipse.jgit.transport.UsernamePasswordCnetworkingentialsProvider.get(UsernamePasswordCnetworkingentialsProvider.java:119) at org.eclipse.jgit.transport.CnetworkingentialsProviderUserInfo.promptYesNo(CnetworkingentialsProviderUserInfo.java:124) at com.jcraft.jsch.Session.checkHost(Session.java:785) at com.jcraft.jsch.Session.connect(Session.java:342) at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:117) at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:137) at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:264) at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:162) at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136) at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122) at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1201) at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:128) at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:203) at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:136) at org.dstadler.jgit.unfinished.PushToRemoteRepository.main(PushToRemoteRepository.java:100) 

y mi código es

  private static final String REMOTE_URL = "git@192.....:ash/test.git"; File localPath = new File("/home/user/Git", ""); localPath.getParentFile().mkdirs(); localPath.createNewFile(); if(!localPath.delete()) { throw new IOException("Could not delete temporary file " + localPath); } Git git = Git.cloneRepository() .setURI( REMOTE_URL ) .setDirectory(localPath) .setCnetworkingentialsProvider( cp ) .call(); System.out.println("Cloning from " + REMOTE_URL + " to " + localPath); System.out.println("please edit the file and then press \"Enter\" here to push "); System.in.read(); File file = new File( git.getRepository().getWorkTree(), "file" + new Object().hashCode() ); git.add().addFilepattern( file.getName() ).call(); git.commit().setAll(true).setMessage("a message").call(); git.push() .setCnetworkingentialsProvider( cp ) .call(); System.out.println("Pushed from repository: " + localPath + " to remote repository at " + REMOTE_URL); } 

Primero intenta establecer una connection desde la línea de command:

 ssh git@... 

Eso debería hacerte la misma pregunta: responde "y".

Una vez hecho esto, significa que una vez que ~/.ssh/known_hosts se ha actualizado mediante el análisis de keys del server remoto, puede probar su mismo progtwig Java JGit nuevamente.

Publiqué antes (hace 5 años) una solución, pero para EGit, no para JGit .

Ver más en " JGit Autenticación Explicada "

JGit proporciona una JSchConfigSessionFactory abstracta que usa JSch para establecer conexiones SSH y requiere que se sobreescriba configure()

El OP Ash agrega en los comentarios :

El problema estaba en el file .ssh/config donde se comentan las líneas necesarias, incluida la identidad de key privada.