动态添加和删除ssh密钥到私有gitlab repo

时间:2016-12-06 11:25:18

标签: gitlab gitlab-ci packer

我需要由gitlab-ci.yml(运行Ubuntu 14.04)创建的VM来安装打包器,然后访问和下载我的整个私有gitlab repo,或者只是来自该repo的单个文件。

首先,我尝试在我的脚本中创建一个ssh密钥,用于创建容器和vm,然后将.pub远程添加到gitlab repo。但是我忘了在构建完成后丢弃新创建的容器。这意味着每次创建容器时都会生成新密钥。

无论如何我可以动态添加和删除私钥GitLab仓库的密钥吗?

1 个答案:

答案 0 :(得分:4)

在GitLab CI Docker容器中使用SSH密钥访问GitLab服务器上的其他存储库:

  • 生成SSH密钥对(一次)。
  • 将每个应授予访问权限的位置的公共密钥添加为deploy key
  • 通过执行以下操作将密钥注入容器:
    • 私有密钥添加为名为before_script秘密变量
    • 将以下内容添加到.gitlab-ci.yml文件
    • 中的GITLAB_HOST_KEY
  • 将GitLab服务器SSH主机密钥注入容器:
    • 将主机密钥添加为名为before_script
    • 秘密变量
    • 将以下内容添加到.gitlab-ci.yml文件
    • 中的before_script: # Add SSH private key and GitLab server host key - eval $(ssh-agent -s) - ssh-add <(echo "$SSH_PRIVATE_KEY") - mkdir -p /root/.ssh - echo "$GITLAB_HOST_KEY" >> /root/.ssh/known_hosts
IndexOutOfBoundException