当前位置: 首页 > 面试题库 >

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

权浩阔
2023-03-14
问题内容

在最终将所有内容组合在一起之前,我发现了许多问题和教程。想要记录下来,这样其他人可以节省很多时间的挫败感。

我正在尝试在BitBucket上获得一个私有git存储库,以使用部署密钥与Spring Boot Config
Server一起使用,并使其在Docker中运行。我遇到很多问题。

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

我似乎无法弄清楚应该在哪里放置SSH信息。所有教程似乎都是针对https的。

  1. 如何为配置提供私钥。对于开发人员来说,YML中内联的语法很麻烦。对于生产,您必须通过环境变量来提供它,这是另一个语法琐事。

我不断收到错误消息,指出私钥无效。

  1. 如何使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


 类似资料:
  • 我发现了很多问题和教程,最后才把这些都放在一起。想把它记录下来,这样别人就可以省下很多时间的沮丧。 我试图在BitBucket上获得一个私人git存储库,使用部署密钥与Spring Boot Config Server一起工作,并在Docker中运行。我遇到了很多问题。 如何使用应用程序进行实际配置。yml文件 我似乎不知道我应该把SSH信息放在哪里。所有教程似乎都是针对https的。 我一直收到

  • 问题内容: 我有一个应用程序可以使用Git执行各种有趣的操作(例如运行git clone和git push),而我正在尝试对其进行docker-ize。 我遇到了一个问题,尽管我需要能够向容器中添加SSH密钥以供容器“用户”使用。 我尝试将其复制到,进行更改,创建了一个git ssh包装器,但还是没有运气。 这是Dockerfile供参考: 运行git命令,如 问题答案: 原来使用Ubuntu时,

  • 问题内容: 我在Mac OS X和Docker Machine(默认的boot2docker计算机)上使用Docker,并使用docker-compose设置开发环境。 假设其中一个容器称为“ ”。现在我想做的就是打电话: 我的公用密钥(已添加到该公用密钥并将用于对我进行身份验证)位于主机上。我希望该密钥可用于Docker Machine容器,这样我就能够通过容器内部使用该密钥进行身份验证。最好不

  • 问题内容: 我正在尝试使用GitHub托管存储库(使用Jenkins Git插件)启动Jenkins并使其运行。该存储库具有多个git子模块,因此我不确定我是否想尝试和管理多个部署密钥。 我的个人GitHub用户帐户是我希望与Jenkins进行的每个项目的合作者,因此我在其中生成了一个SSH密钥并将其添加到我的个人GitHub帐户中。 但是,当我尝试将存储库URL添加到我的Jenkins项目配置中

  • 我正在尝试让Jenkins启动并运行一个GitHub托管的存储库(使用Jenkins Git插件)。存储库有多个git子模块,所以我不确定是否要尝试管理多个部署密钥。 我的个人GitHub用户帐户是我希望与Jenkins合作的每个项目的合作者,因此我在并将其添加到我的个人GitHub帐户。 但是,当我尝试将存储库URL添加到我的Jenkins项目配置时,我会得到: 同样,当我计划构建时,我得到:

  • 我下载并安装git从:https://git-scm.com/downloads.我现在可以在Windows命令提示符上使用git。 我下载了puttygen并用它生成了一对RSA密钥,存储在 我将公钥添加到我公司的git网站。 现在,我如何告诉git使用我刚刚创建的rsa密钥?