【问题标题】:Docker --ssh flag - Host key verification failedDocker --ssh 标志 - 主机密钥验证失败
【发布时间】:2019-10-21 06:33:56
【问题描述】:

我正在尝试使用 Docker 为我构建一个镜像,导入一个托管在私有 github 存储库中的 npm 包:"mypackage": "git@github.com:myaccount/myrepo.git#v0.0.2"

这在本地可以正常工作,因为我有 SSH 访问权限,但显然我的 Docker 容器没有。我已按照以下指南使用 18.09 中启用的一些 ssh 转发来实现这一点:

https://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066

https://docs.docker.com/develop/develop-images/build_enhancements/#using-ssh-to-access-private-data-in-builds

使用以下 docker 文件:

# syntax=docker/dockerfile:experimental
FROM alpine

# Install ssh client and git
RUN apk add --no-cache openssh-client git

# Download public key for github.com
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts

# Clone private repository
RUN --mount=type=ssh npm install

然后,运行 docker build --ssh default . 失败并出现以下错误:

#13 1.309 npm ERR! Host key verification failed.
#13 1.309 npm ERR! fatal: Could not read from remote repository.
#13 1.309 npm ERR!
#13 1.309 npm ERR! Please make sure you have the correct access rights
#13 1.309 npm ERR! and the repository exists.
#13 1.310 npm ERR!
#13 1.310 npm ERR! exited with error code: 128

我正在严格遵守此文档,但没有运气。我错过了什么吗?我在 OSX 上,但是在我的 Travis 环境中也出现了同样的错误。救命!

【问题讨论】:

  • 您是否正在运行ssh-agent 或者您只是使用默认的.ssh/id_rsa 键?
  • 嗯,使用默认即可;或者至少我认为。我该如何检查?
  • --ssh 标志将连接从构建器转发到 ssh-agent。它不会共享密钥所在的.ssh 文件夹。你需要运行ssh-agent
  • 它是作为守护进程运行的还是什么?这是要在 Dockerfile 中运行的命令的一部分吗?
  • 它在后台运行,是的。在使用docker build --ssh default 之前运行ssh-agent。默认设置应该匹配。

标签: docker ssh


【解决方案1】:

这对我有用。

Dockerfile 提取:

# syntax=docker/dockerfile:experimental
...
RUN mkdir -p -m 0600 /root/.ssh
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
COPY development/config /root/.ssh
RUN chmod 0600 /root/.ssh/config
RUN --mount=type=ssh git clone **MY_PVT_REPOSITORY**

这是开发/配置文件的内容,您可以在第三行看到正在复制的内容

Host bitbucket.org
  StrictHostKeyChecking no
  IdentityFile **MY LOCAL PATH**/.ssh/id_rsa 

棘手的是您必须将主机文件路径放入 id_rsa,而不是 docker 上的路径(例如 /home/fabio/.ssh/id_rsa 而不是 /root/.ssh/id_rsa)

然后启动

  ssh-agent
  export DOCKER_BUILDKIT=1
  docker build --ssh default -f development/Dockerfile .

【讨论】:

    猜你喜欢
    • 2020-07-15
    • 1970-01-01
    • 2019-12-08
    • 2017-09-10
    • 1970-01-01
    • 2011-05-08
    • 2018-05-15
    • 2021-12-25
    • 2013-02-16
    相关资源
    最近更新 更多