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

2023-08-27 Β· 483 words