Bitbucket Pipeline如何设置ssh代理以在远程服务器上部署

时间:2016-10-05 02:44:33

标签: docker bitbucket-pipelines

以下是我想要实现的工作流程:

  1. 提交代码
  2. 我的公共docker图像上的bitbucket管道运行测试
  3. bitbucket管道执行ansible脚本以在我的公共docker镜像上部署
  4. 前2个步骤正常,但问题是: 我应该如何/在哪里存储我的私钥以允许ansible通过ssh代理ssh到我的远程服务器?

    我有点不愿意将私钥存储在Pipeline环境设置中,因为其他人都拥有对repo的管理员权限,可以看到它。

    有一个类似的问题here,但答案建议在docker上设置密钥并使用私人仓库,这与我的有点不同。

2 个答案:

答案 0 :(得分:2)

您现在可以在管道设置下设置SSH密钥,这样您就不需要使用环境变量并复制到容器中的某些位置。私钥根本没有显示。

Settings -> Pipelines -> SSH keys

您需要获取生产容器known_hosts文件的公钥。

答案 1 :(得分:1)

我已经设置了一个类似的流程并使用了Pipelines环境变量,有一个复选框可以保护该值,因此您无需担心其他人查看它。

设置非常简单:

  • Base64对私钥进行编码并将其存储在环境变量中 在Bitbucket
  • 将“my_known_hosts”文件提交到包含的代码库 远程主机的公共SSH密钥。

然后在你的bitbucket-pipelines.yml文件中设置known_hosts和key:

- mkdir -p ~/.ssh
- cat my_known_hosts >> ~/.ssh/known_hosts
- (umask  077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)

此处提供完整文档https://confluence.atlassian.com/bitbucket/access-remote-hosts-via-ssh-847452940.html