【问题标题】:Forward ssh agent socket to docker build将 ssh 代理套接字转发到 docker build
【发布时间】:2019-05-08 01:59:37
【问题描述】:

连接到我构建 docker 映像的服务器

ssh -A user@myserver

Dockerfile

# syntax=docker/dockerfile:experimental

FROM golang
WORKDIR /go/src/github.com/xxx/xxx
RUN --mount=type=ssh git clone git@github.com:xxx/xxx.git .
...

建筑形象:

export DOCKER_BUILDKIT=1
docker build --ssh default=$SSH_AUTH_SOCK -t xxx/xxx .
...
#8 1.579 Host key verification failed.
#8 1.579 fatal: Could not read from remote repository.
#8 1.579 
#8 1.579 Please make sure you have the correct access rights
#8 1.579 and the repository exists.
------
rpc error: code = Unknown desc = executor failed running [/bin/sh -c git clone git@github.com:xxx/xxx.git .]: exit code: 128

我错过了什么?

更新

export DOCKER_BUILDKIT=1
docker build --ssh default -t xxx/xxx .

在本地构建会产生相同的结果。

【问题讨论】:

  • 这可能很明显,但它被我咬了好几次。您是否在主机上设置了 ssh-agent?与ssh-add /path/to/private/key?
  • 是的,我可以在“myserver”上git clone,但不能在构建过程中

标签: git docker ssh


【解决方案1】:

您现在可能已经弄清楚或继续前进,但就我而言,我在配置构建时跳过了这一步:

RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

如果 .ssh 目录不存在,ssh 会在不检查代理的情况下厌恶地举手,如果你没有导入服务器的公钥,那么它会提前失败。

【讨论】:

  • 你是我的英雄!
  • 注意,作为一个安全的公民,我们都应该从 github 中保存关键结果,而不是每次都扫描它......我有机会时会编辑
【解决方案2】:

您的错误消息说,它无法验证主机(即)您尝试构建的 docker 映像。

为了做git clone via ssh你必须关注these steps.

但是,如果您想在映像构建期间克隆存储库。你可以使用https instead of ssh进行克隆。

git clone https://username:password@github.com/username/repository.git

所以,您的Dockerfile 应该如下所示:

FROM golang
WORKDIR /xxx
RUN git clone https://username:password@github.com/xxx/xxx.git
...

学分Git clone using username and password

【讨论】:

  • 在 docker 外部我可以使用 ssh 密钥进行克隆。即使在我的本地主机上,这个 docker 密钥转发也不起作用。
  • Outside dockerlocal host是同一台机器还是不同的机器?
  • 即使在本地也无法转发密钥
  • @Jonas 抱歉,我没试过这个。但我可以找到一些可能help you 的项目
  • 这个转发密钥的新功能应该可以工作,可能我遗漏了一些东西。好的,让我们等待也许有人会提出解决方案。
猜你喜欢
  • 2017-09-11
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2015-12-30
  • 2022-01-27
  • 2012-08-20
相关资源
最近更新 更多