홈으로 돌아가기

안전한 Obsidian 동기화: Git 및 암호화

Obsidian에서 Git 및 git-crypt 도구를 사용한 안전한 노트 동기화 설정 상세 가이드로 엔드투엔드 암호화. 기사에서는 GPG 키 생성, 저장소 초기화, Obsidian Git 플러그인 통합, pre-commit 훅 설정 및 백업 방법을 다룹니다.

암호화와 함께 Obsidian 동기화 방법: 완전 가이드
Advertisement 728x90

Git과 종단 간 암호화로 Obsidian 보안 동기화하기

기기 간 Obsidian 노트 동기화하면서 데이터 프라이버시를 완벽히 지키는 건 Git과 git-crypt 도구를 활용하면 간단합니다. 이 방법으로 독점 클라우드 서비스에 의존하지 않고 노트에 대한 완전한 제어를 쥘 수 있어요.

환경 설정 및 GPG 키 생성

필요한 소프트웨어를 먼저 설치하세요. Arch Linux에서는 sudo pacman -S gnupg git-crypt, Debian/Ubuntu에서는 sudo apt install gnupg git-crypt를 실행하세요. 다음으로 GPG 디렉토리 권한을 강화하세요:

chmod 700 ~/.gnupg
find ~/.gnupg -type f -exec chmod 600 {} \;
find ~/.gnupg -type d -exec chmod 700 {} \;

gpg --full-generate-key로 비대칭 키를 생성하세요. 설정 중에 다음을 선택하세요:

Google AdInline article slot
  • 키 유형: RSA (옵션 1).
  • 크기: 4096비트.
  • 만료: 0 (만료 없음).
  • ID 정보: 이름과 이메일.
  • 패스프레이즈: 각 저장소 잠금 해제 시 필요.

편의를 위해 24시간 동안 패스프레이즈를 캐시하려면 ~/.gnupg/gpg-agent.confdefault-cache-ttl 86400max-cache-ttl 86400을 추가한 후 gpgconf --reload gpg-agent를 실행하세요.

git-crypt로 저장소 초기화

노트 폴더로 이동해 Git 저장소를 초기화하세요: cd ~/notes && git init. git-crypt init으로 암호화를 설정한 후 GPG 키를 신뢰 목록에 추가하세요: git-crypt add-gpg-user --trusted [email protected].

.gitignore.gitattributes를 제대로 설정하세요. .gitignore에는 Obsidian 임시 파일과 시스템 파일을 제외하세요:

Google AdInline article slot
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache
.trash/

.gitattributes에는 git-crypt 암호화 대상 파일을 지정하세요:

.gitattributes !filter !diff
.gitignore !filter !diff

*.md     filter=git-crypt diff=git-crypt
*.canvas filter=git-crypt diff=git-crypt
*.png    filter=git-crypt diff=git-crypt
*.jpg    filter=git-crypt diff=git-crypt
*.jpeg   filter=git-crypt diff=git-crypt
*.pdf    filter=git-crypt diff=git-crypt

커밋 순서가 중요합니다: 먼저 .gitattributes를 커밋한 후 나머지를 커밋해 암호화되지 않은 데이터를 푸시하지 마세요.

git add .gitattributes
git commit -m "$(date '+%Y-%m-%d %H:%M')"
git add .
git commit -m "$(date '+%Y-%m-%d %H:%M')"

암호화 상태를 확인하려면 git-crypt status | grep WARNING을 실행하세요. 원격 저장소를 설정하고 푸시하세요.

Google AdInline article slot

Obsidian 연동 및 자동화

Obsidian 설정에서 Obsidian Git 플러그인(Vinzent 제작)을 설치해 UI나 일정에 따라 pull, commit, push를 처리하세요. 핵심 규칙: Obsidian 실행 전에 터미널에서 git-crypt unlock으로 저장소를 반드시 잠금 해제하세요. 그렇지 않으면 노트 텍스트 대신 바이너리 쓰레기가 보이고 플러그인이 잘못된 커밋을 푸시할 수 있어요.

보안을 강화하려면 pre-commit 훅으로 암호화되지 않은 파일 푸시를 차단하세요. 실행 가능한 .githooks/pre-commit 파일을 만드세요:

#!/bin/bash
for file in $(git diff --cached --name-only); do
    if git check-attr filter "$file" | grep -q "git-crypt"; then
        string=$(git show ":$file" 2>/dev/null | head -c 9)
        if [ "$string" != $'\x00GITCRYPT' ]; then
            echo "file '$file' is not encrypted. Be careful!"
            exit 1
        fi
    fi
done
exit 0

Git에 사용하라고 설정하세요: git config core.hooksPath .githooks.

마이그레이션 및 백업

새 기기로 옮길 때는 비밀 GPG 키를 내보내세요: gpg --export-secret-keys --armor [email protected] > ~/key.asc. scp 등으로 안전하게 전송한 후 gpg --import로 가져오고, 저장소를 클론한 뒤 git-crypt unlock을 실행하세요. 양쪽 기기에서 키 파일을 삭제하세요. GPG 키와 패스프레이즈는 비밀번호 관리자 등 안전한 곳에 백업하세요—이게 없으면 노트에 접근할 수 없습니다.

대안: 대칭 암호화

GPG가 과하다면 git-crypt의 대칭 키를 사용하세요. git-crypt export-key ~/key.bin으로 내보내고 base64로 변환해 저장하세요: base64 -i ~/key.bin. 문자열을 비밀번호 관리자에 보관하세요. 다른 기기에서는 echo "base64 string" | base64 -d > key.bin && git-crypt unlock key.bin으로 디코딩하고 잠금을 해제하세요. 주의: 키에 추가 패스프레이즈가 없어 보안이 약합니다—키가 유출되면 데이터가 노출돼요.

주요 장점

  • 완전한 데이터 제어: AES-256 종단 간 암호화로 Git 저장소에 노트가 안전하게 저장됩니다.
  • 원활한 워크플로: Git 필터로 암호화/복호화가 자동—일반 Markdown 파일을 편집하세요.
  • 크로스 플랫폼: Linux, macOS, Windows(WSL 또는 네이티브 Git)에서 동작.
  • 자동 동기화: Obsidian Git 플러그인이 일정 커밋과 푸시를 처리.
  • 추가 보호: pre-commit 훅으로 암호화되지 않은 파일의 우발적 푸시를 막음.

— Editorial Team

Advertisement 728x90

다음 읽기