you may see the issue here too, i post it there first.

actually i have test 2.0.1.RELEASE 2.1.0.RC3. for more details, spring boot version 2.0.5 2.1.0 2.1.1 2.1.2 with 2.0.1.RELEASE, you can config git config server like below

 spring.cloud.config.server.git.uri=ssh://username@gerrit-server/project
 spring.cloud.config.server.git.search-paths=/path
 spring.cloud.config.label=master

but others, this does not work. i'd like to consider this a bug of jgit, but i changed jgit manually from 5.1.3.201810200350-r to 4.11.0.201803080745-r, which is the version used by sb 2.0.1.RELEASE, still does not work, and the error is the same. and 5.2.1.201812262042-r also the same. and i guarantee that there is everything you need to clone a project below user's home. git clone in the command line worked vast well. and my computer is windows 10, jdk 1.8.0_201 and the exception is below:

org.eclipse.jgit.api.errors.TransportException: ssh://username@gerrit-server/project: Auth fail
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:254) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.cloneToBasedir(JGitEnvironmentRepository.java:574) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.copyRepository(JGitEnvironmentRepository.java:549) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.createGitClient(JGitEnvironmentRepository.java:532) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.refresh(JGitEnvironmentRepository.java:261) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.getLocations(JGitEnvironmentRepository.java:240) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.getLocations(MultipleJGitEnvironmentRepository.java:150) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.AbstractScmEnvironmentRepository.findOne(AbstractScmEnvironmentRepository.java:47) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.findOne(MultipleJGitEnvironmentRepository.java:190) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.environment.CompositeEnvironmentRepository.findOne(CompositeEnvironmentRepository.java:46) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.cloud.config.server.config.ConfigServerHealthIndicator.doHealthCheck(ConfigServerHealthIndicator.java:55) [spring-cloud-config-server-2.1.0.RC3.jar:2.1.0.RC3]
    at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:84) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:98) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:50) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_201]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_201]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201]
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:246) [spring-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:76) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:61) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:126) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:99) [spring-boot-actuator-2.1.2.RELEASE.jar:2.1.2.RELEASE]
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) [na:1.8.0_201]
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) [na:1.8.0_201]
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) [na:1.8.0_201]
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) [na:1.8.0_201]
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) [na:1.8.0_201]
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) [na:1.8.0_201]
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) [na:1.8.0_201]
    at sun.reflect.GeneratedMethodAccessor64.invoke(Unknown Source) ~[na:na]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_201]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_201]
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) [na:1.8.0_201]
    at sun.rmi.transport.Transport$1.run(Transport.java:200) [na:1.8.0_201]
    at sun.rmi.transport.Transport$1.run(Transport.java:197) [na:1.8.0_201]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_201]
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) [na:1.8.0_201]
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) [na:1.8.0_201]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) [na:1.8.0_201]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) [na:1.8.0_201]
    at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0_201]
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) [na:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_201]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_201]
    at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_201]
Caused by: org.eclipse.jgit.errors.TransportException: ssh://username@gerrit-server/project: Auth fail
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:192) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:280) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1271) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:243) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    ... 47 common frames omitted
Caused by: com.jcraft.jsch.JSchException: Auth fail
    at com.jcraft.jsch.Session.connect(Session.java:519) ~[jsch-0.1.54.jar:na]
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:146) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    ... 54 common frames omitted

Comment From: ryanjbaxter

Please use Greenwich.RELEASE and try again. If you can reproduce the problem with Greenwich.RELEASE can you provide a complete, minimal, verifiable sample that reproduces the problem? It should be available as a GitHub (or similar) project or attached to this issue as a zip file.

Comment From: seelikes

@ryanjbaxter i'm sorry, what is Greenwich.RELEASE, do you mean 2.1.0.RELEASE? i tried the newest spring boot, 2.2.0.BUILD-SNAPSHOT, which has the same error. and you can see my demo from the attachment. you may need to change the spring.cloud.config.server.git.uri property since this is my own code server, and you can never auth success. sb-config-demo-2057.zip

Comment From: ryanjbaxter

I started this git server locally https://hub.docker.com/r/jkarlos/git-server-docker/ and changed spring.cloud.config.server.git.uri to point to it and everything worked fine using your sample

Comment From: seelikes

@ryanjbaxter is it possible that this git server does not need local ssh settings? could you change the spring.cloud.config.server.git.uri to this project, since i have already tested github, and it's the same error. and my system is windows 10, is it possible that the problem happens only on windows 10 system? i will test ubuntu on Monday,on my work computer.

Comment From: seelikes

@ryanjbaxter i have tested my demo on Ubuntu, everything worked well. and i re-test this demo on windows 10, yet still this error. is it possible this is an error about system? why spring boot 2.0.5 with spring cloud config 2.0.1 worked fine? i hava also test spring boot 2.0.5 on Ubuntu, worked well.

Comment From: ryanjbaxter

Could it be something with ssh on windows? I cant really say, no one on the team uses Windows so we cannot test.

Comment From: ryanjbaxter

In any case it does not sounds like this is a problem with Spring Cloud Config since we dont have any OS specific code. It could be something with JGIT I suppose.

Comment From: ryanjbaxter

Did you use the same JDK on Ubuntu?

Comment From: ryanjbaxter

Maybe use JGIT directly without Spring Cloud and see if you get a similar issue?

Comment From: seelikes

@ryanjbaxter i think you're right, maybe this really has nothing to do with spring-cloud-config. could you please mark this issue as help-wanted, maybe someone will come with an solution someday? if not, you can close this issue anyway, thanks.

Comment From: ryanjbaxter

I will close it, if someone else finds the issue they can comment and we can try to address it

Comment From: Bryksin

Facing the same issue Environment: Mac "Catalina" OpenJdk: 11 Spring Boot: 2.2.0.RELEASE springCloudVersion: Hoxton.RC1 || Greenwich.RELEASE - doesn't matter, the problem exists in both

Bootstrap.yml:

---
spring:
  profiles: dev
  cloud:
    config:
      server:
        git:
          uri: git@<some_our_domain>/spring-config-dev.git
          ignoreLocalSshSettings: false

Exception:

org.eclipse.jgit.api.errors.TransportException: git@<some_our_domain>/spring-config-dev.git: Auth fail
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:254) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.cloneToBasedir(JGitEnvironmentRepository.java:574) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.copyRepository(JGitEnvironmentRepository.java:549) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.createGitClient(JGitEnvironmentRepository.java:532) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.refresh(JGitEnvironmentRepository.java:261) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.JGitEnvironmentRepository.getLocations(JGitEnvironmentRepository.java:240) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.getLocations(MultipleJGitEnvironmentRepository.java:149) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.AbstractScmEnvironmentRepository.findOne(AbstractScmEnvironmentRepository.java:47) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentRepository.findOne(MultipleJGitEnvironmentRepository.java:189) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.environment.CompositeEnvironmentRepository.findOne(CompositeEnvironmentRepository.java:46) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.cloud.config.server.config.ConfigServerHealthIndicator.doHealthCheck(ConfigServerHealthIndicator.java:55) ~[spring-cloud-config-server-2.1.0.RELEASE.jar:2.1.0.RELEASE]
    at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:82) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthIndicator.getHealth(HealthIndicator.java:37) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:80) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpoint.getHealth(HealthEndpoint.java:38) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:106) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getAggregateHealth(HealthEndpointSupport.java:116) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getContribution(HealthEndpointSupport.java:103) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:81) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpointSupport.getHealth(HealthEndpointSupport.java:68) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:74) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:65) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:279) ~[spring-core-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:77) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:60) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:121) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at org.springframework.boot.actuate.endpoint.jmx.EndpointMBean.invoke(EndpointMBean.java:96) ~[spring-boot-actuator-2.2.0.RELEASE.jar:2.2.0.RELEASE]
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:809) ~[na:na]
    at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) ~[na:na]
    at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1466) ~[na:na]
    at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1307) ~[na:na]
    at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1399) ~[na:na]
    at java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:827) ~[na:na]
    at java.base/jdk.internal.reflect.GeneratedMethodAccessor77.invoke(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:359) ~[na:na]
    at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) ~[na:na]
    at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) ~[na:na]
    at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
    at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[na:na]
    at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:562) ~[na:na]
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:796) ~[na:na]
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:677) ~[na:na]
    at java.base/java.security.AccessController.doPrivileged(Native Method) ~[na:na]
    at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:676) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: org.eclipse.jgit.errors.TransportException: git@<some_our_domain>/spring-config-dev.git: Auth fail
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:192) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:140) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:280) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:170) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1271) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:243) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    ... 54 common frames omitted
Caused by: com.jcraft.jsch.JSchException: Auth fail
    at com.jcraft.jsch.Session.connect(Session.java:519) ~[jsch-0.1.54.jar:na]
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:146) ~[org.eclipse.jgit-5.1.3.201810200350-r.jar:5.1.3.201810200350-r]
    ... 61 common frames omitted

@ryanjbaxter any idea?

Comment From: Bryksin

Got it sorted! 1) basically I had to create ~/.ssh/config file, without it, JSch didn't work at all, even though git itself working just fine without it.

Host <your_git_host>
    HostName <your_git_host>
    IdentityFile ~/.ssh/<your_git_service/bot_user_private_key-id_rsa>

only when you will directly point it to identityFile, only then it will attempt to use your private key. However, it might also fail with another error:

Caused by: com.jcraft.jsch.JSchException: invalid privatekey

even though the key is definitely valid, in that case, you may help 2nd step:

2) Since OpenSSH 7.8 and higher default private key format starts with:

-----BEGIN OPENSSH PRIVATE KEY-----

where JSch doesn't support it, and key needs to be converted to old RSA format: -----BEGIN RSA PRIVATE KEY-----

here is the command:

ssh-keygen -p -f <your_git_service/bot_user_private_key-id_rsa> -m pem -P passphrase -N passphrase

Comment From: SledgeHammer01

@Bryksin I'm having the same issue and tried your fix and still getting auth failed.

My config file looks like:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/id_rsa

And my application.properties looks like:

spring.cloud.config.server.git.uri=git@github.com:xxx/Config.git spring.cloud.config.server.git.clone-on-start=true spring.cloud.config.server.git.strict-host-key-checking=false spring.cloud.config.server.git.skip-ssl-validation=true spring.cloud.config.server.git.ignore-local-ssh-settings=false

Comment From: emrekgn

I know this is an old issue page but the problem still exists and this is the first link that comes up on Google, so I'm just posting this for reference.

The problem is actually related to JGit and how you generate your SSH key pairs.

If you use ssh-keygen -m pem to generate using PEM format, then the private key file has a comment line beginning with -----BEGIN RSA PRIVATE KEY----- If you just simply use ssh-keygen to generate them, it uses OpenSSH format and the private key file has a comment line beginning with -----BEGIN OPENSSH PRIVATE KEY----- and JGit library cannot recognize the OpenSSH formatted key file.

~~So for anyone still having this issue, the quickest solution would be to re-generate your SSH key pair using PEM format.~~

~~But according to this JGit release notes, they handled this problem on version 5.2. So if spring-cloud-config can upgrade its JGit version to at least 5.2, this should be permanently fixed.~~ ~~(Correct me if I am wrong but I think it currently uses JGit 5.1.3)~~

Edit: This is only true if you are using an older version of spring-cloud-config-server (e.g. 3.0.4 or older or SpringBoot v2.4.x or older)

Comment From: ryanjbaxter

@emrekgn actually we are using 5.12.x https://github.com/spring-cloud/spring-cloud-config/blob/main/spring-cloud-config-dependencies/pom.xml#L18

Comment From: emrekgn

Thanks for the clarification @ryanjbaxter. It's my bad I didn't write the SpringBoot version (v2.4.9) in the first post, so the problem is just using an older version of Spring Cloud Config.

(I'm looking at Spring Initializr) SpringBoot 2.4.x with Spring Cloud Config Server dependency comes with spring-cloud-config-server v3.0.4 which depends on JGit v5.1.3. So I think if I just use a newer version (3.1.0), it should be resolved.

Thanks again!

Comment From: PepeValenzuela98

Any news? im trying the steps of @Bryksin but im strill getting the Invalid Privatekey error.

this is my yml config

git: default-label: master uri: git@github.com:PepeValenzuela98/config-repo.git cloneOnStart: true ignoreLocalSshSettings: true passphrase: ${myPassphrase} privateKey: ${privateKey generate of @Bryksin process}

and im getting:

Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@2625667b at com.jcraft.jsch.KeyPair.load(KeyPair.java:664) ~[jsch-0.1.55.jar:na] at com.jcraft.jsch.KeyPair.load(KeyPair.java:561) ~[jsch-0.1.55.jar:na] at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40) ~[jsch-0.1.55.jar:na] at com.jcraft.jsch.JSch.addIdentity(JSch.java:406) ~[jsch-0.1.55.jar:na] at com.jcraft.jsch.JSch.addIdentity(JSch.java:366) ~[jsch-0.1.55.jar:na] at org.eclipse.jgit.transport.JschConfigSessionFactory.getJSch(JschConfigSessionFactory.java:383) ~[org.eclipse.jgit.ssh.jsch-5.12.0.202106070339-r.jar:5.12.0.202106070339-r] at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:120) ~[org.eclipse.jgit.ssh.jsch-5.12.0.202106070339-r.jar:5.12.0.202106070339-r] ... 36 common frames omitted

Comment From: bvn13

@PepeValenzuela98

invalid privatekey: [B@2625667b

means that you are using OpenSSH key format. Convert the private key into old RSA format or create a new one pair.


I'm struggling with such issue. I'm on Linux. My git server is hosted with gitea. The access is set up via ssh. I created a key pair usin

ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/my_key.rsa

~/.ssh/config has these lines:

Host gitea.my.server
    HostName gitea.my.server
    IdentityFile ~/.ssh/my_key.rsa

My spring boot version is 2.6.8, spring cloud version is 2021.0.1 and jgit is up to 5.9.0.202009080501-r (the latest 5.x version at the moment).

My config is

spring:
  cloud:
    config:
      server:
        git:
          uri: ssh://git@gitea.my.server:2221/team/properties.git
          clone-on-start: true
          passphrase: my-phrase

And I get the exception:

Caused by: org.eclipse.jgit.errors.TransportException: ssh://git@gitea.my.server:2221/team/properties.git: Auth fail
    at app//org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:162)
    at app//org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:107)
    at app//org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:254)
    at app//org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:144)
    at app//org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:105)
    at app//org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:91)
    at app//org.eclipse.jgit.transport.Transport.fetch(Transport.java:1260)
    at app//org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:211)
    ... 160 more
Caused by: com.jcraft.jsch.JSchException: Auth fail
    at app//com.jcraft.jsch.Session.connect(Session.java:519)
    at app//org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:115)
    ... 167 more

Last logs jgit shows are:

SSH_MSG_KEX_ECDH_INIT sent
expecting SSH_MSG_KEX_ECDH_REPLY
Host 'gitea.my.server' is known and matches the ECDSA host key
SSH_MSG_NEWKEYS sent
SSH_MSG_NEWKEYS received
SSH_MSG_SERVICE_REQUEST sent
SSH_MSG_SERVICE_ACCEPT received
Authentications that can continue: publickey,keyboard-interactive,password
Next authentication method: publickey
Disconnecting from gitea.my.server port 2221