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...
我正在做一个 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...