使用 ssh 和部署密钥从私有 gitlab 克隆 Dockerfile

使用 ssh 和部署密钥从私有 gitlab 克隆 Dockerfile

(编辑) 这个问题也发生在我的笔记本电脑上使用 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

相关内容