시크릿 파일 동기화
age 암호화로 민감한 파일을 안전하게 동기화하는 방법
일부 설정 파일에는 SSH 키, API 토큰, 인증 정보처럼 git 저장소에 평문으로 올리면 안 되는 민감한 데이터가 들어있어요. Devsync는 이런 파일을 위해 secret 모드를 제공해요. 저장 전에 age로 암호화해요.
secret 모드를 사용해야 할 때
섹션 제목: “secret 모드를 사용해야 할 때”저장소가 공개될 경우 노출되면 곤란한 파일에는 --mode secret을 써요.
~/.ssh/config— SSH 호스트 설정~/.aws/credentials— AWS 액세스 키~/.config/gh/hosts.yml— GitHub CLI 토큰- 인증 토큰이 포함된
~/.npmrc - 실제 인증 정보가 담긴
.env파일 - API 키, 비밀번호, 개인 토큰이 담긴 모든 파일
시크릿이 없는 파일(편집기 설정, 셸 alias, 토큰 없는 .gitconfig)은 기본 normal 모드를 사용하면 돼요.
age 암호화 동작 방식
섹션 제목: “age 암호화 동작 방식”Devsync는 공개키 암호화 방식인 age를 사용해요.
- 개인키 (
AGE-SECRET-KEY-...):~/.config/devsync/age/keys.txt에 저장돼요 - 수신자(recipient): 파일 암호화에 사용되는 공개키(
AGE1...)예요 push시: secret 파일이 등록된 모든 수신자 공개키로 암호화돼요pull시: 암호화된 파일이 내 개인키로 복호화돼요
이 방식의 특징:
- 개인키가 없으면 저장소에서 시크릿 파일 내용을 읽을 수 없어요
- 공개키를 여러 개 추가해서 여러 기기에서 시크릿을 공유할 수 있어요
age 키 설정
섹션 제목: “age 키 설정”age 키는 devsync init 시 자동으로 생성돼요. 처음 시작이라면 키 입력 프롬프트에서 엔터만 누르면 새 키 쌍이 만들어져요.
devsync init# → 엔터를 눌러 새 age 키를 생성해요개인키는 ~/.config/devsync/age/keys.txt에 저장돼요.
초기화 시 기존 키를 제공할 수도 있어요.
devsync init --key AGE-SECRET-KEY-1...또는 키 파일 경로를 지정할 수도 있어요.
devsync init --identity ~/path/to/key.txt시크릿 파일 추적하기
섹션 제목: “시크릿 파일 추적하기”devsync track ~/.ssh/config --mode secretdevsync track ~/.aws/credentials --mode secretpush를 실행하면 암호화되어 저장소에 저장돼요.
devsync pushsync 디렉터리에는 .devsync.secret 확장자가 붙어서 저장돼요.
디렉터리~/.config/devsync/sync/default/
디렉터리.ssh/
- config.devsync.secret
디렉터리.aws/
- credentials.devsync.secret
다른 기기에서 시크릿 파일 가져오기
섹션 제목: “다른 기기에서 시크릿 파일 가져오기”-
기존 저장소와 백업해 둔 개인키로 새 기기에서 Devsync를 초기화해요.
Terminal window devsync init https://github.com/yourname/dotfiles.git --key AGE-SECRET-KEY-1... -
파일을 가져와요.
Terminal window devsync pull시크릿 파일은 자동으로 복호화되어 로컬 경로에 저장돼요.
여러 기기를 위한 공개키 추가
섹션 제목: “여러 기기를 위한 공개키 추가”기기마다 별도의 age 키 쌍을 사용한다면, 공개키를 추가해서 어느 기기에서도 복호화할 수 있게 할 수 있어요.
# 새 기기의 공개키를 확인해요cat ~/.config/devsync/age/keys.txt# AGE-SECRET-KEY-... (개인키)# 공개키는 init 시 출력되거나, 개인키에서 파생할 수 있어요
# 기존 기기에서 새 기기의 공개키를 수신자로 추가해요devsync init --recipient AGE1xyz...newdevicepublickey...공개키를 추가하고 다시 push하면 시크릿 파일이 두 키 모두로 암호화돼요.
devsync push보안 유의사항
섹션 제목: “보안 유의사항”- 파일 내용은 암호화되지만, 파일 이름과 경로는 저장소에 그대로 보여요
.devsync.secret확장자로 해당 파일이 추적된 시크릿임은 알 수 있어도, 내용은 알 수 없어요- 공개 저장소에 시크릿 파일을 저장해도 내용 측면에서는 안전하지만, 경로 자체에서 설정 정보가 노출될 수 있다는 점을 고려하세요