![使用 ssh 和部署密钥从私有 gitlab 克隆 Dockerfile](https://linux22.com/image/711425/%E4%BD%BF%E7%94%A8%20ssh%20%E5%92%8C%E9%83%A8%E7%BD%B2%E5%AF%86%E9%92%A5%E4%BB%8E%E7%A7%81%E6%9C%89%20gitlab%20%E5%85%8B%E9%9A%86%20Dockerfile.png)
(编辑) 这个问题也发生在我的笔记本电脑上使用 root 和我的用户时,当尝试使用 git 用户进行 ssh 时,可以收到问候语。然后尝试了 ansible playbook,它也引发了 repo 的错误。尝试了另一个,克隆完美。那么,问题似乎不是出在 git、docker 或 ssh 上,而是出在 gitlab 配置上。
在 Dockerfile 上,我试图单独的私有存储库托管在运行 gitlab 的公司服务器上,并使用非标准 ssh 端口进行设置。
这是我期望运行的(以及 ssh 配置文件中的一些参数)
RUN git clone [email protected]:GroupName/repo_name.git
我已经检查过的内容:
- 该 repo 有一个部署密钥并且处于活动状态。
- 使用 Ansible 而不是 docker 进行自动化,它可以连接和克隆 repos。
- 该密钥名为 id_rsa,位于 ~/.ssh/ 中
尝试使用 ssh-agent 并且看起来没问题(虽然我在配置中指定了该文件但并不需要它)
Identity added: /opt/.ssh/id_rsa (/opt/.ssh/id_rsa)
~/.ssh/config 包含以下内容:
Host * StrictHostKeyChecking no PubkeyAcceptedKeyTypes +ssh-rsa PasswordAuthentication no User git ForwardAgent yes Identityfile /opt/.ssh/id_rsa # /opt is the home of the user RUNning the command in docker port 22022
从容器中运行此命令:
ssh -vT -i /opt/.ssh/id_rsa [email protected]:GroupName/repo_name.git
获取结果
欢迎来到 GitLab,匿名人士!
但是 git clone 命令得到:
Cloning into 'repo_name'...
GitLab: The project you were looking for could not be found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
The command '/bin/sh -c git clone [email protected]:GroupName/repo_name.git;' returned a non-zero code: 128
答案1
在哪里~/.ssh/config
?Docker 构建以 root 身份完成,因此配置需要在/root/.ssh/config