gitlab持续部署私钥安全

gitlab continuous deployment private key security

我正在做一个 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 文件将暴露在网络服务器上。

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

谢谢

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