加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Spring Cloud Config Server使用SSH密钥进行Git并在Docker中运行

发布时间:2020-12-16 03:36:16 所属栏目:安全 来源:网络整理
导读:在最终总结之前我找到了很多问题和教程.想要记录它,以便其他人可以节省许多小时的挫折感. 我试图在BitBucket上获得一个私有的git存储库,以使用部署密钥与Spring Boot Config Server一起工作并让它在Docker中运行.我遇到了很多问题. 如何使用application.yml

在最终总结之前我找到了很多问题和教程.想要记录它,以便其他人可以节省许多小时的挫折感.

我试图在BitBucket上获得一个私有的git存储库,以使用部署密钥与Spring Boot Config Server一起工作并让它在Docker中运行.我遇到了很多问题.

>如何使用application.yml文件进行实际配置.

我似乎无法弄清楚应该把SSH信息放在哪里.所有教程似乎都适用于https.

>如何为配置提供私钥.对于Dev,YML中内联的语法很痛苦.对于生产,您必须通过环境变量提供它,这是另一种语法习惯.

我一直收到私钥无效的错误.

>如何让Docker容器信任主机密钥,而不是那个讨厌的“你相信这个人”的提示.

似乎有几种方法可以完成这项工作,但只有一种方法可以帮助我.

最佳答案
第一部分是配置.您希望忽略标准私钥并使用作为环境变量提供的私钥. (SSH_KEY).此外,git repo是EV(GIT_URL),但如果需要,您可以进行硬编码.

spring:
  cloud:
    config:
      server:
        git:
          uri:  ${GIT_URL}
          ignore-local-ssh-settings: true
          private-key: ${SSH_KEY}

第2部分很棘手.对于Dev,您需要内联键,因此您需要使用管道在YAML中为块添加前缀. (注意这个钥匙是扔掉的,就像我刚生成它一样,现在把它扔掉了)

private-key: |
                    -----BEGIN RSA PRIVATE KEY-----
                    MIIEpAIBAAKCAQEAszmCR06LVHk/kNYV6LoYgEfHlK4rp75sCsRJ7rdAbWNED+yB
                    bneOm5gue0LGIhT7iTP9D7aN6bKVHv1SBconCA7Pa2NMA9epcMT5ecJc8ndpZOFn
                    iqM77jmMMPvj8EIC06w5oK5zoYwpGotYQFHllf8M+20HtW2fZdPYAYwLcVdmc5tI
                    vLoS+10qw5D3X9zrwk2Cbt37Iqnz1cHOQq+g7sxgVgt18aIKKeg0JslaGqSlWMoT
                    ICUMHj89E4BMHj8ND8otSXHL+VhN+ghd7w1MpckxLWBsNs1+G1FuiJEVAtRq/j+8
                    SOilxgifvI1LqpZ5kO01XFlmkcuN4NMT03qpcwIDAQABAoIBAB5oQGk2sz7mv1kk
                    aV0tzaBeDUd1cWSpUw1UljKRFrY4ZEDLYH5MfH57iE9TWehIZRC3KFU1JMikitZS
                    JktjK9IbKSfQFgKE4XOHh8gXqMteZRw/feCwpydYzic1ZUvK903QZ4qSbn3XGNYv
                    FA79lhUny50Qt4EZkzSkh35js0FMSR9VmyXENxN6IgXUZyoaNAATr44Vkd488BY2
                    7PvdOniemo8/8p4Ij0Aq9Q7rOtm77ZXjyFRX5mDTi2ndSllMEhVcWXHSii+ukbvF
                    117Ns+8M7VWroNfRzI+Ilm/Xz/ePOLlNoYcY0h5+QM9vMPTX9Cpl5WofgOMK1sKd
                    mSdI4ukCgYEA12kcu0aDyIrEPHcyaT9izSFply0Uon2QKS9EQn6cr83vaEGViamh
                    f5q1coYouGnsLfbgKolEMKsYtbmJvInPFDCdc2x0Fmc207Wp1OECsN+HwElEXkrs
                    uPDpGQgs5odjN5Grue9837920oG3UBBdVDAKly2dTOcvoWW+88seFSUCgYEA1P7f
                    p78HDMQ8zTy5+3Rd4+lmJjPsY618XxSQ80j8Elrhi/DyTMA0XGc5c3cKRPmSj+JD
                    GN34WQbw7JO2mKM7YJs+tkSBeTKce8F3cZQy1jy3LNHCtfXylOxmxOFKynV5h2b/
                    jno+pGdmAPK5yvnGASd2eujtzt+AL07XiD2LnLcCgYEAsFRz131WfP/SuShdlLf1
                    WbODKuQVIxojuwLdHo1kF6k805v0G/dGoxzycOgPRz41vj57q3Yn4qr8FC3n6PTq
                    FT3idUyPDpO41r67Ye469KxWBHo1Q/aTJqTWOs5tatvixOcyqoa3MrUZQCI8+4YZ
                    z8Nvt+b3/66zV6vhDtHzMx0CgYAvWW2M0+mUS/ecRHivzqGkrdkYewh87C8uz9qd
                    SsdGqU9kla63oy7Ar+3Unkz5ImYTeGAkIgw4dlOOtBOugPMNOdXKHRaPQ9IHrO2J
                    oUFf4OVzoDnhy4ge1SLPd6nxsgXPNPVwzfopABdr9Ima9sWusgAjuK5NA+ByI9vE
                    HLJxpwKBgQCTM938cdx457ag1hS6EaEKyqljS1/B8ozptB4cy3h0hzw0crNmW84/
                    1Lt9MJmeR4FrWitQkkVLZL3SrYzrP2i+uDd4wVVD5epvnGP/Bk6g05/eB9LgDRx/
                    EeBgS282jUBkXZ6WpzqHCcku3Avs3ajzsC1WaEYx0tCiBxSkiJlaLQ==
                    -----END RSA PRIVATE KEY-----

在生产方面,您需要在命令提示符处使用bash变量来存储密钥,然后再将其传递给运行容器的Docker命令.例:

$pem=$( cat path_to_key )
$docker run -e "SSH_KEY=$pem" configserver

此时你应该得到应用程序的处理.现在您只需要通过ssh主机不受信任的问题.为此,请在Dockerfile中添加这些行.将“bitbucket.org”替换为您想要的任何主机.这些命令创建ssh config目录,修复权限,然后创建并填充knownhosts文件.

RUN mkdir -p /root/.ssh
RUN chmod 700 /root/.ssh
RUN ssh-keyscan bitbucket.org > /root/.ssh/known_hosts

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读