在 spring cloud config server 中使用 ssh 连接 git 仓库

最近没怎么写博客,短期内可能也不怎么写了,主要是因为改行了,我也没想到有一天会去做科研。等这个微服务项目结束后,我可能就会暂时告别业务开发;思之不免有些唏嘘。

也许我可以在这里记录我的科研心得。但是科研笔记这种东西,也不是我藏私,实在是不知道从何写起,零零碎碎的一些感想,拿出来分享也没啥用,不能落地的想法也就是想法罢了,而能落地的想法全部都体现在论文里了。

他日我若有幸发表论文,将在此敬告诸君。


因为用 username 和 password 连接 git 仓库的方式不是很好(主要是经常会不小心把账号密码 push 上去……),所以我们自然会想到用 ssh 来连接。

此外,最近国内和 github 的网络连接不是很稳定,组里总有人跟我吐槽说经常拿不到配置,所以我想了想,就换到码云上了。虽然码云和 github 相比有很多不足,但有个功能还是不错的,就是所谓的部署公钥,这种公钥只有pull的权限,相对来说还是比较安全的,可以直接生成一个 guest key,然后写进配置里,就不用每个人在本地生成ssh key,然后一个一个拉协作了。

总而言之,用 ssh 一般是两种方法:从本地读 ssh key,或者从配置文件读 ssh key。两种都很简单,我分别贴一个我的配置(server)。

方法一

spring:
  cloud:
    config:
      server:
        git:
          uri: git@gitee.com:<username>/<repo-name>.git
          default-label: master
          search-paths: '*'
          strict-host-key-checking: false

这种方法会去本地查找(~/.ssh/id_rsa这种的)。

方法二

spring:
  cloud:
    config:
      server:
        git:
          uri: git@gitee.com:<username>/<repo-name>.git
          default-label: master
          search-paths: '*'
          strict-host-key-checking: false
          ignore-local-ssh-settings: true
          private-key: |
            -----BEGIN RSA PRIVATE KEY-----
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            -----END RSA PRIVATE KEY-----

注意 private key 后面的|,这个很重要,在 yaml 里代表后面的内容是 raw string,也就是保留格式,不进行转义。如果对此有疑问,可以看看我之前翻译的 yaml 教程,里面对此有说明。

至于为什么要关闭 host key check,因为可能会报错com.jcraft.jsch.JSchException: reject HostKey,我并不太想纠结这个问题,索性就关了。

另外还有一个很有意思的问题,就是类似于这样的报错:com.jcraft.jsch.JSchException: invalid privatekey: [B@277050dc。看网上说是 jsch 版本低了,不支持新版本的 ed25519 加密算法,但我用的就是 rsa,并且升级到最新版也没用,后来仔细一看,这玩意最新版都是两年前的了……所以问题不在这。

后来有人说是 openssh 版本太高,这个确实,但是现在新版本的 OS 都是默认高版本的 openssh,为了这个单独降版本也不是很好。后来我就去 ubuntu 16.04 的服务器上生成了一个拿来用,就完事了。生成的时候得用这个命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

这里有一些补充说明,有兴趣的读者不妨一读:https://stackoverflow.com/questions/53134212/invalid-privatekey-when-using-jsch/55740276。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值