我正在开发一个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文件将在网络服务器上公开。
所以我的问题是如何在不必将私钥存储在临时文件中的情况下工作。
谢谢
答案 0 :(得分:0)
是否有理由在项目所在的同一文件夹中创建id_rsa文件?如果您只是将id_rsa文件prom项目文件夹移动到/home/local-user/.ssh文件夹,您不必担心意外复制?抱歉打字错误,写电话......