spring cloud config server使用ssh方式连接config-repo

Posted rage_angel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud config server使用ssh方式连接config-repo相关的知识,希望对你有一定的参考价值。

spring cloud config server 有三种连接git方式,从而读取config repo中的配置信息。

方式一:用户名密码方式

spring:
  cloud:
    config:
      server:
        git:
          uri: https://git.oschina.net/config-repo
          username: username
          password: password

uri使用https地址。

方式二:SSH属性配置

生成SSH公钥,将公钥信息添加到git上。

生成公钥方式 

注意配置文件中的uri使用ssh地址:git@gitee.com:config-repo.git

因为之前生成过公钥,但是无法链接。索性清除key-pair重新生成密钥对。

首先,清除所有的key-pair
ssh-add -D
rm -r ~/.ssh
删除你在github中的public-key

重新生成ssh密钥对
ssh-keygen -t rsa -C "xxx@xxx.com"
chmod 0700 ~/.ssh
chmod 0600 ~/.ssh/id_rsa*

接下来正常操作
在github上添加公钥public-key:
1、首先在你的终端运行 xclip -sel c ~/.ssh/id_rsa.pub将公钥内容复制到剪切板
2、在github上添加公钥时,直接复制即可
3、保存

链接: https://www.zhihu.com/question/21402411/answer/42836492 如果出现Reject HostKey的错误,可参考 https://blog.csdn.net/czq7511/article/details/76038386

方式三:用java属性设置SSH连接

spring:
  cloud:
    config:
      server:
        git:
          uri: git@gitee.com:config-repo.git
          ignoreLocalSshSettings: true  #为了激活基于属性的SSH配置
#          hostKey: someKey
#          hostKeyAlgorithm: ssh-rsa
#          strictHostKeyChecking: true
          privateKey: |
                       -----BEGIN RSA PRIVATE KEY-----
                       MIIEpQIBAAKCAQEAzlveAu1ttIQpxbLhGxKXu4OCfMFmHecFqtk21qz0wAxDGNhh
                       HntkXVBoBLhWGrhMSuGlGz3PU0MkvTheRYLzf3r75lK5R0EqULJ7fcYxRVwiSNTb
                       **************************************
                       nEgjIlotLeGb+FxegNgZZd/4Dywk36tuvzLWlY6YBJlOxYYg54aYE61X85PzHJM+
                       P4hXH3ECgYEA7aGXCEBZmtRF4Z9hkEhwI0StXAvCqXibFw1kMD1viP4z43VNrSQb
                       4aW4u3pkKeMA9ezcp8J40zsCql3vz65Gokj1haS04MVkDVNK9P/g3jlfx9zSxSlB
                       +JYIL0yduAUBZx+FJ4jZe4S4DkS5X43XKfilfbrXX4kjVaeSOwbe76I=
                       -----END RSA PRIVATE KEY-----

用方式三的时候遇到的问题:

1、根据官方文档配置好信息之后,会出现异常com.jcraft.jsch.JSchException: reject HostKey: gitee.com 和 com.jcraft.jsch.JSchException: Auth fail .

尝试过各种解决方式,最后无聊看spring cloud版本都已经更新到F了,我们还是用的之前的d的release,已经跳过坑的我,似乎觉察到了什么。稍微尝试了下更新到Dalston.SR5,果然,又在新旧版本的坑里折腾了很久。

2、privateKey添加方式,注意别少了 |

3、升级了下版本之后,不再报500异常了,但是又出现了404.控制台warn如下:

2018-03-29 09:54:03.819  WARN 52093 --- [nio-8021-exec-6] .c.s.e.MultipleJGitEnvironmentRepository : Could not fetch remote for master remote: git@gitee.com:config-repo.git

又读官网配置,检查配置,无果。无意中把hostKey、hostKeyAlgorithm、strictHostKeyChecking这三个属性注释掉之后,刷新页面,配置信息居然出来了。

众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

泪!!!

参考:

http://projects.spring.io/spring-cloud/

http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#spring-cloud-feign


2018.3.30--------

版本升级之后,发现之前加密过的字符串不能解析了。但是昨天线上更新一版,并没有出现问题。

本地配置问题?可是换回低版本之后又可以,排除本地环境配置问题。

最后没办法之际,觉得刚才粗粗略过的一个回答,尝试下?嗯,解析出来了。

总结:spring cloud Dalston.SR5 版本之后,application.yml文件里不能有encrypt.key,启动的时候再配置,就不会出问题了。

参考:https://github.com/spring-cloud/spring-cloud-config/issues/800







以上是关于spring cloud config server使用ssh方式连接config-repo的主要内容,如果未能解决你的问题,请参考以下文章

`spring-cloud-starter-eureka-server`和`spring-cloud-starter-netflix-eureka-server`之间的区别

spring-cloud-starter-eureka-server 和 spring-cloud-starter-netflix-eureka-server的区别

spring-cloud-config:spring-cloud-config Maven配置错误

spring-cloud-config-server

无法通过 spring.cloud.config.enabled:false 禁用 Spring Cloud Config

0701-spring cloud config-简介Config Server开发Config Client开发