【问题标题】:Why can't I git clone a private git repository with the correct ssh keys in docker?为什么我不能在 docker 中使用正确的 ssh 密钥克隆私有 git 存储库?
【发布时间】:2017-11-11 08:41:16
【问题描述】:

我正在尝试使用 ssh 身份验证从 docker 容器内部 git clone 到私有存储库。我遵循了here 提出的解决方案。

为此,我创建了一个本地密钥

ssh-keygen -q -t rsa -N '' -f repo-key

并将公钥添加到github ssh 密钥。然后在我添加的 Dockerfile 中:

RUN chmod 600 repo-key && \  
    echo "IdentityFile /selenium/repo-key" >> /etc/ssh/ssh_config && \  
    echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config 

但是当我尝试 git clone 存储库时,我收到了错误消息

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

还有什么我可以检查的吗?

再次解释原因:我希望能够使用固定私钥创建图像,该私钥始终与 github 上的公钥一起使用,因此我可以使用相同的图像,但能够将实际/当前存储库下载到正在运行的容器。该映像配备了正确的密钥,因此它可以访问 github 存储库,并且能够在从同一映像启动包含的内容时下载当前存储库... 该图像用于硒测试,稍后将由脚本(或詹金斯)自动执行,然后我无法“登录”到容器以创建 ssk 密钥对并将公钥上传到 github。整个过程是自动化测试。因此,必须将身份验证构建到图像中。

希望这现在很清楚。

【问题讨论】:

  • 您是否尝试过这里讨论的内容:Clone private git repo with dockerfile
  • 哦,谢谢你的链接;我实际上是根据那里提出的解决方案构建我的解决方案...
  • 我注意到您的git clone ssh:// ... 命令有一点不同。您是否尝试过那里提到的内容 (git clone git@...)?
  • 不,因为 git clone ssh... 是 - 据我所知 - 通过 ssh 进行身份验证的正确命令......这就是重点......
  • 你也可以试试@jpetazzo 建议here 进行调试吗?

标签: git docker github ssh


【解决方案1】:

因为您已经在 docker 容器中创建了 ssh 密钥。你需要做什么:

  • 登录 docker 容器复制生成的 ssh 公钥。
  • 然后您需要将公钥添加到您的 github 帐户。

之后,您可以轻松克隆私有 git 存储库。

【讨论】:

  • 我想在不登录的情况下执行此操作。我想自动创建一个 docker 映像并准备好使用。
  • @Raza Mehdi,OP 想要在 image 中添加密钥,而不是(后来创建的)container
  • @tgogos 我知道。他正在通过 ssh 克隆一个 repo。涉及到一个手动步骤,包括向 github 添加 ssh 密钥,除非有配置的程序自动将 ssh 公钥添加到 github
  • 我已经把公钥加到github了。对于图像创建我想在图像中使用相应的私钥
  • 当我使用存储在主机上某处的密钥时不会。我不能每次都使用新密钥,每次手动向 github 插入新公钥会很愚蠢...
【解决方案2】:

克隆 GitHub 存储库时,您仍然需要指定正确的用户来建立该 ssh 连接:git

所以:

 git clone git@github.com:User/repo.git
          ^^^^^

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2019-05-10
    • 1970-01-01
    • 2011-05-18
    • 2020-09-20
    • 2015-05-29
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多