gitlab持续部署私钥安全

时间:2018-04-30 19:34:37

标签: continuous-integration gitlab continuous-deployment

我正在开发一个php项目。

我有2台服务器:

- gitlab server
- production server (apache2 + php + mysql)

我的PHP源文件在我的gitlab服务器上存储和版本化。 我想自动将php文件部署到生产服务器。

以下是我的所作所为: - 我创建了一个" deployer"用户在生产服务器上。 - 我为这个用户运行了ssh-keygen。 - 我已将ssh私钥(/home/deployer/.ssh/id_rsa)复制并粘贴到gitlab秘密变量中。

以下是.gitlab-ci.yml文件的摘录:

deploy:
  stage: deploy
  when: manual
  only:
  - master
  script:
  - echo "${SSH_PRIVATE_KEY}" > id_rsa
  - chmod go-rwx ./id_rsa
  - rsync -hrvz --delete --exclude '.git*' --exclude id_rsa -e 'ssh -o StrictHostKeyChecking=no -i ./id_rsa' ./ deployer@productionservrer.com:/var/www/html

一切正常。

我的问题是需要创建一个临时id_rsa文件来存储rsync的私钥。此文件从rsync中排除,但我对此文件感到不满。如果有人意外删除了rsync --exclude选项,我的id_rsa文件将在网络服务器上公开。

所以我的问题是如何在不必将私钥存储在临时文件中的情况下工作。

谢谢

1 个答案:

答案 0 :(得分:0)

是否有理由在项目所在的同一文件夹中创建id_rsa文件?如果您只是将id_rsa文件prom项目文件夹移动到/home/local-user/.ssh文件夹,您不必担心意外复制?抱歉打字错误,写电话......