Git-Crypt - githubμ λκΈ°νν λ μλ μνΈν
Intro Githubμ μμ€μ½λλ₯Ό μ¬λ¦΄ λ μνΈν ν μ μλ ν΄ μ¬λ¦΄ λμλ μνΈνν΄μ μ¬λ¦¬κ³ λ€μ΄λ‘λ μμλ 볡νΈν ν΄μ€λ€. 보μν€λ ν¨μ€μλ, μ€μ μ€μ μ 보 λ±μ΄ 곡κ°μ© λΏλ§ μλλΌ λΉκ³΅κ°μ© μ μ₯μμ μ¬λ¦΄ λμλ μ μ©νλ€. μμΈλ¬ vimwikiλ μ§κ·Ήν κ°μΈμ μΈ λ¬Έμλ₯Ό μ μ₯ν λ githubλ₯Ό μ΄μ©ν κ²½μ°μλ λ§€μ° μ μ©νλ€. Github μμ²΄κ° ν΄νΉλλ κ²½μ°λ μκ³ , githubμ μλ£λ λͺ¨λ κΉνλΈμ μ¬μ°μ΄λ―λ‘ λ΄ μλ£λ₯Ό 보νΈν νμκ° μλ€. μ무리 λΉκ³΅κ°μ©μ΄λΌ ν μ§λΌλ κΊΌλ¦Όμ§νκΈ°λ λ§μ°¬κ°μ§λ€. μ΄λ κ² ν΄ λλ©΄ μ’μ μ μ PCκ° λ°λμ΄λ μμ μ₯μκ° λ°λμ΄λ λͺ¨λ μμ νκ² κ°μΈμλ£λ₯Ό λκΈ°νν μ μλ€. λ¬Όλ‘ κ°μΈμλ£λ₯Ό μλ²λ ΈνΈλ ꡬκΈκ³μ μ μ μ₯ν΄λ λκ² μ§λ§ μ΄κ³³λ κ·Όλ³Έμ μΌλ‘ 보μμνλ λ§μ°¬κ°μ§μ΄λ€. λν κ°λ°μ, μκ° λ±μ μμ½κ² githubλ₯Ό ν΅ν΄ μ μ₯μλ₯Ό λκ³ μμ μ νλ κ²μ΄ νΈλ¦¬νλ€. κ·Έλ κΈ°μ μκ³ κ°λ³κ³ μμ‘΄μ±λ μλ git-cryptλ₯Ό νμ©νκ² λ κ²μ΄λ€. μλ μμ νκ² μΌλ μ μ₯μλ₯Ό μ¬λ¬ κ° μΈ κ²½μ° κ·Έ λ§νΌ κ΄λ¦¬ν ν€κ° λμ΄λκ³ λ°λ‘ 보κ΄ν΄μΌ νλ λ¬Έμ κ° μκΈ΄λ€. μνΈνκ° νμν νμΌμ κ°κΈμ ν μ μ₯μμ λͺ¨μΌκ³ νλμ ν€λ§ λ°λ‘ USBλ κΈ°ν μ₯μμ 보κ΄ν΄ λλ κ²μ΄ μ’κ² λ€. λ§μ½ git-cryptμ μν΄ μκΈ΄ ν€λ κΉνλΈμ μ μ₯νλ€λ©΄ μκΈ° λͺ¨μμ λΉ μ§λ―λ‘ λ³λλ‘ λ°±μ 보κ΄ν΄μΌ νλ€. Install $ sudo apt install git-crypt # Ubuntu, Debian $ doas apk add git-crypt # Alpine Using git-crypt μ£Όμμ¬ν: git-cryptλ₯Ό μ μ©νκΈ° μ μ λ°μ΄ν°λ μνΈν ν μ μλ€. λ°λΌμ githubμμ μλ‘μ΄ μ μ₯μλ₯Ό λ§λ€κ³ μλ μ μ°¨λ₯Ό μ§νν΄μΌ νλ€. μλ your_secret_file κ³Ό your_secret_directoryλ μ μ₯μ λ΄μ μνΈνν νμΌ λλ ν΄λ. $ git clone git@github.com:<github_user>/<your_progject_name> $ cd <your_project_name> $ git-crypt init $ cat <<EOF > .gitattributes your_secret_file_name filter=git-crypt diff=git-crypt *.key filter=git-crypt diff=git-crypt your_secret_dir/** filter=git-crypt diff=git-crypt EOF $ echo "hello world" > your_secret_file $ echo "hello world" > your_secret_dir/file1 $ git add . && git commit "update files" && git push μμ μ κΉνλΈ μ μ μμ κ°μ μ¬λ¦° νμΌμ΄ μνΈμ λμλμ§ λ‘κ·ΈμΈν΄μ νμΈνλ€. 보ν΅μ κ²½μ° μ μ€μ μ΄ μ λμμΌλ©΄ νμμ λλ‘ gitμ μ¬μ©νλ©΄ μ μ₯μ κ΄λ¦¬κ° λλ€. μμ±λ μνΈν€ κ΄λ¦¬ μμ git-crypt init λͺ λ Ήμ μννλ©΄ .git/git-crypt/keysλ‘ μ΄κΈ°νλκ³ ν€κ° μμ±, 보κ΄λλ€. Symmetric Mode: μμ±λ ν€λ λ‘컬μλ§ μ‘΄μ¬νλ―λ‘ μ΄ ν€λ₯Ό USB λ±μ μ μ₯ν΄ λμλ€κ° λ€λ₯Έ κ³³μμ κΉνλΈ μ μ₯μλ₯Ό λ€μ΄ λ°μ ν μ΄λ₯Ό μ¬μ©νλ©΄ λλ€. GPG Mode: λν λ€λ₯Έ μ¬μ©μμ ν€λ₯Ό μΆκ°μμΌ κ·Έ μ¬μ©μκ° μ μ₯μμ μ κ·Όν μ μλλ‘ ν μ μλ€. (μμ ν¬ν¨) GPG Mode - μμ λλ λ€λ₯Έ μ¬μ©μμ ν€λ₯Ό μΆκ°νλ κ²½μ° $ git-crypt add-gpg-user <USER_ID> # μ£Ό μ¬μ©μλͺ¨λ: USER_ID is Public GPG key ID ... $ git clone git@github.com:<github_user>/<your_progject_name> # νλ½λ°μ μ¬μ©μλͺ¨λ $ cd <your_project_name> $ git-crypt unlock Symmetric Mode - ν€λ₯Ό κ°μ§κ³ μλ μ¬μ©μ(λ³΄ν΅ μκΈ°μμ )μ΄ μ μ₯μλ₯Ό μ¬μ©ν μ μλ λ°©λ² $ git-crypt export-key <path_to_your_keyfile> # μ£Ό μ¬μ©μκ° ν€λ₯Ό λ°±μ νκΈ° ... $ git clone git@github.com:<github_user>/<your_progject_name> # λ€λ₯Έ κ³³μμ 볡νΈν νκΈ° $ cd <your_project_name> $ git-crypt unlock <path_to_your_keyfile> # λ°±μ ν΄λ ν€νμΌμ μ΄μ©ν΄ 볡νΈννκΈ° μ°Έκ³ μ¬ν .gitattributes νμΌ μμ μ μνΈνλμλ μλλ€κ³ λ©λ΄μΌμ λμ μλ€. .gitattributes νμΌμ dir/**μμ **μ΄ λ κ°μΈ μ΄μ λ μ΄ν μλΈ λλ ν 리μμλ μ μ©μν¬ μ μκΈ° λλ¬Έμ΄λ€. μλΉν λ§μ νμΌμ΄λ ν΄λμ μ μ©νλ κ²μ μ’μ§ μλ€. μμ€νμΌμ΄λ ν μ€νΈ νμΌμ μνΈν νλ λ° μ ν©νκ³ μ΄μ§νμΌμ΄λ λ°μ΄ν° νμΌμλ 그리 μ ν©νμ§ μλ€. νμΌμ΄λ¦μ΄λ νμΌμ λν λ©νμ 보λ μνΈννμ§ λͺ»νλ€. μ¦ νμΌμ λ΄μ©μ μνΈν νλ€. REFERENCE Git-Crypt Home - https://www.agwa.name/projects/git-crypt/ git-crypt github - https://github.com/AGWA/git-crypt managing secrets with git crypt - https://dzone.com/articles/managing-secrets-with-git-crypt