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

Dynamically add and remove ssh keys to private gitlab repo

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

首先,我尝试在创建容器和虚拟机的脚本中创建一个 ssh 密钥,然后将 .pub 远程添加到 gitlab 存储库。但是我忘记了新创建的容器在​​构建完成后被丢弃。意味着每次创建容器时都会生成新密钥。

无论如何,我可以动态地添加和删除私有 GitLab 存储库的密钥吗?

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

  • 生成 SSH 密钥对(一次)。
  • 将 public 密钥添加为 deploy key 每个应授予该密钥访问权限的地方
  • 通过执行以下操作将密钥注入容器:
    • 私有 密钥添加为名为 SSH_PRIVATE_KEY
    • 秘密变量
    • 将以下内容添加到 .gitlab-ci.yml 文件中的 before_script
  • 将 GitLab 服务器 SSH 主机密钥注入容器:
    • 将主机密钥添加为名为GITLAB_HOST_KEY
    • 秘密变量
    • 将以下内容添加到 .gitlab-ci.yml 文件中的 before_script
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