动态添加和删除 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
我需要由 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