springCloud_config_git仓库私钥配置

使用config配置中心

1. 使用本地配置

需要声明, spring.profiles.active=native, 这种就是使用本地配置;
缺点:

不能实时刷新配置文件, 使用actuator 的 /refresh 接口来刷新, 是重新从config配置中心中获得, 刷新的是客户端的配置文件;
config配合中心的配置文件如果修改了, 需要重启才能刷新, 每次修改完配置文件都需要重启config配置中心才行;*

详细配置信息如下:

spring:
  profiles:
    active: native   # 启动本地配置文件, set Git URI in your configuration
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/test01
2. 使用git仓库, 用户名密码配置;

使用git的用户名和密码, 登录来拉取仓库信息, 主要是uri, basedir, username, 和 password 四个必填的属性值, uri可以使用ssh的链接;
注意: 如果缺少, 拉取的本地路径basedir会等不到配置文件;

详细配置信息如下:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/username/config
          basedir: E:\git\config
          username: username
          password: password
          search-paths: test01,test02
3. 使用git仓库, 私钥配置:
使用用户名密码配置的方式, 将密码写在配置文件中总是不太好, 也可以使用私钥的配置方式;
1. 创建一个私钥, 
2. 配置config配置中心;
spring:
  cloud:
    config:
      server:
        git:
          uri: [email protected]:credit/config.git
          basedir: E:\git\config
		  passphrase: ******  # 私钥的口令, 没有可以不配置

注意:

  1. 没有username, 和 password属性, 如果username没有去掉, 会默认走用户名密码的方式, 导致, password属性没有找到, 报错访问不到;
  2. 私钥读取的是默认位置 ~/.ssh/id_ras, 如果有多个私钥自行配置 ~/.ssh/config 文件
  3. 私钥的产生方式 使用命令 ssh-keygen -m PEM -t rsa -b 4096
    这几个参数是必须的;
4. 使用私钥配置在文件中

还有一种是将私钥写在配置文件中, 不读取本地的私钥
注意使用换行符保持格式相同

spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.private-key="\
-----BEGIN RSA PRIVATE KEY-----\n
b3BlbnNzaC1rZXktdjEAAAAAtskoQN1tcvvYAovZ9/eZLq2+Ix
.......
qsY+JZs6Frc\n
dV5LJLLlyM9eb9omlwAAAApsaXpoZW5
naHVpAQIDBAUGBw==\n
-----END RSA PRIVATE KEY-----"

官方提供的是yml文件的书写格式, 尝试使用但是报错, 私钥格式不正确, 没有找到原因
错误代码
产生这个的原因是: 生成私钥的方式不对,
一般使用ssh-keygen生成的私钥开头都是

-----BEGIN OPENSSH PRIVATE KEY-----
b2MnBmKZ....wCJpSr95c
-----END OPENSSH PRIVATE KEY-----

但是spring官方提供的私钥方式是RSA如下格式

-----BEGIN RSA PRIVATE KEY-----
b2MnBmKZ....wCJpSr95c
-----END RSA PRIVATE KEY-----

所以会提示格式不正确, 使用下面命令解决私钥可以解决问题

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

-m 参数指定密钥的格式,PEM(也就是RSA格式)是之前使用的旧格式
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型

补充:

spring.cloud.config.server.svn.search-paths=test01,test02
  1. 当项目过多的时候, 将配置文件拆分的子目录中, 就需要用到该参数,
    如果不配置, 默认扫描根目录下的配置文件;
  2. 使用application为文件名称的配置文件, 里面是公共的配置信息不管是在哪个子目录下都会扫描到, 都会公共使用;
  3. application-{profiles}.yml(properties) 这个文件中会对所有的*-{profiles}.yml 文件的公共信息, 所有的指定环境的都会生效;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章