2016-06-29 87 views
5

使用Spring Boot,Java 1.8,cloud-config-serverspring cloud config ssh連接失敗

我試圖訪問一個使用這個application.yml代碼片段的git repo。但是沒有找到主機密鑰。

spring: 
cloud: 
    config: 
     allowOverride: true 
     failFast: true 
     overrideNone: true 
     overrideSystemProperties: false 
     server: 
     git: 
      uri: ssh://[email protected]:7999/project/name.git 

和地址是我knowHosts文件:

10.4.31.179:7999,10.4.31.179 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1UF27s4svxRyc3eQVq67hOhl9szwXy15oaUmo5Ndtk9DP5QEvstSA1MR0JotcKrhEHb4FA8a06oRvkyj55zfvr9t96O/sva+66TegPGjiWZNU75LSEKhA8EZ+/VEKVA2Pk1iUEYbtFZZ+SuTKtikXQt0EjghHpx66mWEJU11911+quCfjOIL74tz96IoXBfTZJmhiUQN+SC4UG3bCnha3mMlCnb1/0BkX+YuAy3GN+UTSxCqeEHuwhN8+DsPhVgTKx/YVbhZUPlGlYEUZjjXk6RnyhQr32Jwzv4WpeVu943e2UzlUFMMorl+usur7bSAZWsQWyz6MfjYUyKZkdZYjQ== 

堆棧跟蹤:

com.jcraft.jsch.JSchException: UnknownHostKey: 10.4.31.179. RSA key fingerprint is 9e:6a:f1:59:98:59:e4:f8:ac:39:e7:02:07:d8:4f:58 
    at com.jcraft.jsch.Session.checkHost(Session.java:786) 
    at com.jcraft.jsch.Session.connect(Session.java:342) 
    at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:116) 
    at org.eclipse.jgit.transport.SshTransport.getSession(SshTransport.java:136) 
    at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:262) 
    at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:161) 
    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:1115) 
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:130) 
    at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:178) 
    at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:125) 
    at org.springframework.cloud.config.server.JGitEnvironmentRepository.cloneToBasedir(JGitEnvironmentRepository.java:269) 
    at org.springframework.cloud.config.server.JGitEnvironmentRepository.copyRepository(JGitEnvironmentRepository.java:241) 
    at org.springframework.cloud.config.server.JGitEnvironmentRepository.createGitClient(JGitEnvironmentRepository.java:226) 
    at org.springframework.cloud.config.server.JGitEnvironmentRepository.findOne(JGitEnvironmentRepository.java:114) 
    at org.springframework.cloud.config.server.MultipleJGitEnvironmentRepository.findOne(MultipleJGitEnvironmentRepository.java:87) 
    at org.springframework.cloud.config.server.EnvironmentController.labelled(EnvironmentController.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:775) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:965) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:856) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:841) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:300) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:103) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:77) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

知道爲什麼這是不工作?

+0

你試試我更新的答案嗎? –

+0

我無權訪問我知道的已知主機。我可以這樣做:JSch.setConfig(「StrictHostKeyChecking」,「no」);但是它只是在私鑰級失敗。 –

回答

1

我認爲在你的knowHosts文件,你應該使用[host]:port格式是這樣的:

[10.4.31.179]:7999,10.4.31.179 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1UF27s4svxRyc3eQVq67hOhl9szwXy15oaUmo5Ndtk9DP5QEvstSA1MR0JotcKrhEHb4FA8a06oRvkyj55zfvr9t96O/sva+66TegPGjiWZNU75LSEKhA8EZ+/VEKVA2Pk1iUEYbtFZZ+SuTKtikXQt0EjghHpx66mWEJU11911+quCfjOIL74tz96IoXBfTZJmhiUQN+SC4UG3bCnha3mMlCnb1/0BkX+YuAy3GN+UTSxCqeEHuwhN8+DsPhVgTKx/YVbhZUPlGlYEUZjjXk6RnyhQr32Jwzv4WpeVu943e2UzlUFMMorl+usur7bSAZWsQWyz6MfjYUyKZkdZYjQ== 

sshd man page說:

主機名或地址還可以使用封閉「[」和']'括號,然後是':'和一個非標準端口號。

OR

您可以通過命令行

ssh 10.4.31.179 -p 7999 

SSH和然後接受公鑰,knowHosts文件隨後將正確設置。

如果仍然無法正常工作,請設置knownHosts文件。

jsch.setKnownHosts(knowHostsFileName) 
+0

不,這沒有奏效,我也嘗試過沒有端口號。可能它可能是java正在尋找文件的錯誤位置? –

+0

我已經更新了我的答案。 –

1

這是我的解決方案:

  • 創建~/.ssh/config像下面,不要忘記加上StrictHostKeyChecking no

    Host git 
        HostName 10.4.31.179 
        StrictHostKeyChecking no 
        Port 7999 
        User git 
        IdentityFile ~/.ssh/id_rsa 
    
  • 在你application.yml通過更改URI git:/project/name.git

    spring: 
        cloud: 
        config: 
         allowOverride: true 
         failFast: true 
         overrideNone: true 
         overrideSystemProperties: false 
        server: 
         git: 
         uri: git:/project/name.git 
    
3

這是a related GitHub issue and a comment

TL; DR在嘗試連接到存儲庫服務器之前,您需要更新~/.ssh/known_hosts非散列格式

一個襯墊,

ssh-keyscan -t rsa {hostname or IP} >> ~/.ssh/known_hosts