apt-get install git-crypt
или brew install git-crypt
).git crypt init
(создает файл .gitattributes
)..gitattributes
укажите шаблоны файлов, которые нужно зашифровать (например, secrets/* filter=git-crypt diff=git-crypt
).git add .gitattributes; git commit -m "Configure git-crypt"
.git crypt generate-key
(для симметричного шифрования) ИЛИ используйте PGP (смотрите документацию git-crypt).git crypt export-key
и импорт на другой машине git crypt unlock
..gitattributes
, должны быть зашифрованы в репозитории и расшифрованы в рабочей директории после git crypt unlock
.Чтобы зашифровать репозиторий с помощью git-crypt
, необходимо выполнить следующие шаги:
git-crypt
:
Сначала убедитесь, что git-crypt
установлен в вашей системе. Способ установки зависит от вашей операционной системы:
sudo apt-get install git-crypt
brew install git-crypt
choco install git-crypt
git-crypt
для получения инструкций.git-crypt
в репозитории:
Перейдите в корень вашего репозитория и выполните команду:
git crypt init
Эта команда создает файл .gitattributes
в вашем репозитории, который будет использоваться для определения, какие файлы следует шифровать.
Отредактируйте файл .gitattributes
, чтобы указать файлы, которые должны быть зашифрованы. Используйте шаблон pattern filter=git-crypt diff=git-crypt
. Например, чтобы зашифровать все файлы .env
, добавьте следующую строку:
*.env filter=git-crypt diff=git-crypt
Вы можете использовать различные шаблоны для выбора файлов, например:
secret.txt filter=git-crypt diff=git-crypt
(один файл)config/* filter=git-crypt diff=git-crypt
(все файлы в каталоге config
)*.key filter=git-crypt diff=git-crypt
(все файлы с расширением .key
)Закоммитьте изменения в .gitattributes
:
git add .gitattributes
git commit -m "Добавлено шифрование файлов .env"
Существует два основных способа создания ключа:
Используйте команду для добавления пользователей, которые смогут расшифровывать репозиторий. Вам понадобится адрес электронной почты каждого пользователя, связанный с его ключом GPG:
git crypt add-gpg-user <user's email address>
Например:
git crypt add-gpg-user alice@example.com
git crypt add-gpg-user bob@example.com
Эта команда шифрует ключ репозитория для каждого указанного пользователя. Убедитесь, что у пользователей есть корректно настроенный GPG ключ и он доступен.
Используйте команду:
git crypt export-key -o .git/git-crypt/key
Затем безопасно передайте файл .git/git-crypt/key
всем, кто должен иметь доступ к зашифрованным файлам. Важно: Никогда не коммитьте этот файл в репозиторий! Храните его в безопасном месте и передавайте по защищенному каналу (например, через зашифрованное сообщение или лично).
После клонирования репозитория или после смены ключа необходимо его разблокировать. Способ зависит от используемого метода:
git crypt unlock
автоматически использует ваш приватный ключ GPG для расшифровки. Убедитесь, что ваш приватный ключ GPG доступен.
Поместите файл .git/git-crypt/key
в соответствующую директорию (она может быть создана). Затем выполните:
git crypt unlock .git/git-crypt/key
После успешной разблокировки вы сможете видеть зашифрованные файлы в расшифрованном виде.
Добавьте файл .git/git-crypt/key
в файл .gitignore
, чтобы случайно не закоммитить его в репозиторий:
echo ".git/git-crypt/key" >> .gitignore
git add .gitignore
git commit -m "Добавлено игнорирование файла ключа"
Важные замечания:
git-crypt
все изменения в зашифрованных файлах будут автоматически шифроваться перед коммитом.git-crypt
шифрует только содержимое файлов, но не имена файлов или структуру каталогов.