безопасность закрытого ключа непрерывного развертывания gitlab - PullRequest
0 голосов
/ 30 апреля 2018

Я работаю над проектом php.

У меня есть 2 сервера:

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

Мои исходные файлы PHP хранятся и версии на моем сервере gitlab. Я хочу автоматически развернуть файлы php на производственном сервере.

Вот что я сделал: - Я создал пользователя «развертывателя» на производственном сервере. - Я запустил 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 голосов
/ 30 апреля 2018

Есть ли причина для создания файла id_rsa в той же папке, где находится ваш проект? Если вы просто переместите папку проекта выпускного файла id_rsa, скажем, в папку /home/local-user/.ssh, вам не придется беспокоиться о случайном копировании? Извините за опечатки, пишу с телефона ...

...