首页 > 解决方案 > git@gitlab.com:权限被拒绝 - 致命:无法从 Dockerfile 读取远程存储库

问题描述

我有Dockerfile以下RUN说明:

RUN pip install -r ./private_requirements.txt

private_requirements.txt文件是一个指向 GitLab 存储库的 ssh URL:

git+ssh://git@gitlab.com/organization/viiaa/abc_xx.git@v19.0

当我docker build评估 RUN 指令时,我得到以下输出:

> [intermediate 9/9] RUN pip install git+ssh://git@gitlab.com/organization/viiaa/abc_xx.git@v19.0:
#13 0.574 Collecting git+ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0
#13 0.574   Cloning ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0 (to revision v19.0) to /tmp/pip-req-build-ck2o3z6p
#13 0.574   Running command git clone -q 'ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0' /tmp/pip-req-build-ck2o3z6p
#13 1.018   Warning: Permanently added the ECDSA host key for IP address '172.65.251.78' to the list of known hosts.
#13 1.286   Load key "/root/.ssh/id_rsa": invalid format
#13 1.425   git@gitlab.com: Permission denied (publickey,keyboard-interactive).
#13 1.426   fatal: Could not read from remote repository.
#13 1.426
#13 1.426   Please make sure you have the correct access rights
#13 1.426   and the repository exists.
#13 1.428 WARNING: Discarding git+ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0. Command errored out with exit status 128: git clone -q 'ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0' /tmp/pip-req-build-ck2o3z6p Check the logs for full command output.
#13 1.428 ERROR: Command errored out with exit status 128: git clone -q 'ssh://****@gitlab.com/organization/viiaa/abc_xx.git@v19.0' /tmp/pip-req-build-ck2o3z6p Check the logs for full command output.
------
executor failed running [/bin/sh -c pip install git+ssh://git@gitlab.com/organization/viiaa/abc_xx.git@v19.0]: exit code: 1

我已经将我的公钥添加到gitlab 配置文件密钥

标签: dockersshgitlab

解决方案


RUN pip install -r ./private_requirements.txt尝试git+ssh://git@gitlab.com/organization/viiaa/abc_xx.git@v19.0从容器内部访问您的。
但是容器无权访问您的 ssh 密钥!

您可以将您的私钥复制到 docker 容器中——出于安全原因,不建议这样做。

但是 docker 不支持在构建步骤中挂载,因此转发 ssh 密钥很棘手,但这是可能的。
请参阅SO:SSH agent forwarding during docker build 中的答案或Dan Pav 的另一个答案


推荐阅读