devAlice
← Multi-OS

비밀번호 매니저 — Mac + Windows 통합 셋업과 CLI 자동화

1Password / Bitwarden 양 머신 셋업, SSH·Git·dotfiles에서 자동 fetch까지.

비밀번호 매니저는 두 가지 경계에서 가치가 생긴다 — (1) 브라우저 자동 채우기, (2) 터미널·dotfiles·CI에서 CLI로 시크릿 자동 fetch. (1)만 쓰면 1Password를 50% 활용한 셈이다. CLI 자동화를 같이 셋업하면 .env에 시크릿 평문을 쓰지 않아도 되고, 새 머신 부트스트랩이 한 줄 명령으로 끝난다.

이 가이드는 1Password (권장) · Bitwarden 두 옵션을 비교하고, Mac + Windows 양쪽에 통합 셋업하는 방법.

TL;DR

항목1PasswordBitwarden
가격유료 ($/월)무료 + 유료 옵션
보안 모델E2E + Secret Key (디바이스 인증)E2E + master password
CLI 품질✅ 매우 좋음 (op CLI + biometric)양호 (bw CLI)
SSH 통합✅ 네이티브 SSH agent수동
Git 서명 통합✅ ssh-key로 commit 서명수동
모바일 / 가족 공유
셀프 호스팅✅ (Vaultwarden)

권장: 1Password (개발자 워크플로 통합 ↑). 비용 민감 또는 셀프호스팅 원하면 Bitwarden.

1. 1Password 셋업

1.1 설치 (Mac)

brew install --cask 1password 1password-cli

1.2 설치 (Windows)

winget install --id AgileBits.1Password -e
winget install --id AgileBits.1Password.CLI -e

1.3 첫 로그인

데스크톱 앱 → 계정 로그인 (Email + Secret Key + Master Password). Secret Key는 가입 시 받은 PDF 또는 다른 디바이스에서.

1.4 CLI ↔ 데스크톱 통합

데스크톱 앱 → Settings → Developer → "Integrate with 1Password CLI" ✅. 이게 핵심 — op 명령이 GUI biometric (Touch ID / Windows Hello)으로 인증된다.

확인:

op vault list
# 비밀번호 입력 없이 Touch ID/Windows Hello로 unlock

2. SSH 키 통합 (1Password)

전통적으로 SSH 키는 ~/.ssh/id_ed25519 평문 파일. 1Password는 SSH agent를 내장해서 키를 vault에 저장하고 사용 시점에 biometric 인증.

2.1 키 생성

1Password 데스크톱 → "+" → SSH Key:

  • Name: personal-ed25519
  • Algorithm: Ed25519
  • 자동으로 키 페어 생성

2.2 SSH agent 활성화

데스크톱 → Settings → Developer → "Use the SSH agent"

  • macOS: ~/.ssh/config에 자동 추가
  • Windows: 환경변수 자동 셋업

2.3 GitHub에 공개 키 등록

1Password vault → 해당 키 항목 → "Public key" 복사 → GitHub → Settings → SSH and GPG keys → New SSH key.

2.4 테스트

ssh -T git@github.com
# Hi yourname! You've successfully authenticated...
# (이 시점에 Touch ID/Windows Hello 한 번)

이제 ~/.ssh/에 키 파일이 없어도 SSH 동작. 새 머신은 1Password 로그인만 하면 자동 사용 가능.

3. Git commit 서명 (SSH 키로)

GPG보다 단순. 같은 1Password SSH 키로 commit 서명:

git config --global gpg.format ssh
git config --global user.signingkey "ssh-ed25519 AAAA... your-comment"
# 위 공개 키는 1Password 키 항목에서 복사
git config --global commit.gpgsign true

이제 git commit 시 1Password biometric → 자동 서명. GitHub Settings → SSH and GPG keys → "Add new signing key" 에 같은 공개 키 등록.

4. .env / API 키 통합

직접 .env에 평문 작성 대신 1Password에서 fetch:

4.1 vault에 시크릿 추가

1Password → "+" → API Credential:

  • Title: Anthropic API Key
  • Credential: sk-ant-...
  • Tags: dev, api

4.2 CLI로 fetch

op item get "Anthropic API Key" --fields credential
# sk-ant-...

4.3 op run — 자동 주입

.env.tmpl 파일에 placeholder만:

ANTHROPIC_API_KEY=op://Private/Anthropic API Key/credential
GITHUB_TOKEN=op://Private/GitHub/token

실행:

op run --env-file=.env.tmpl -- npm run dev
# 환경변수에 실제 값 주입된 상태로 명령 실행

.env.tmpl은 git commit 안전 (참조만 있음). 실제 시크릿은 vault에만.

4.4 chezmoi 통합

mac/dotfiles에서 본 chezmoi 템플릿:

# dot_env.tmpl
export ANTHROPIC_API_KEY={{ onepasswordRead "op://Private/Anthropic/credential" }}

chezmoi apply 시 자동 주입 → 새 머신에 평문 .env 생성.

5. Bitwarden — 무료 대안

5.1 설치

# Mac
brew install --cask bitwarden bitwarden-cli
 
# Windows
winget install Bitwarden.Bitwarden
winget install Bitwarden.CLI

5.2 로그인 + 세션

bw login email@example.com
# Master password 입력 → API Key 반환
 
# 세션 변수 export
export BW_SESSION="$(bw unlock --raw)"
# 또는 .zshrc에 함수로:
function bwl { export BW_SESSION="$(bw unlock --raw)"; }

5.3 시크릿 가져오기

bw get item "Anthropic API"
bw get password "Anthropic API"
bw get notes "Some Long Note"

JSON 출력이라 jq와 조합 좋다:

bw get item "GitHub" | jq -r '.login.password'

5.4 약점

  • SSH agent 미통합 (수동으로 키 vault에 저장하지만 자동 사용 안 됨)
  • Git commit 서명 자동화 없음
  • biometric 통합이 OS·앱 의존적 (1Password보다 매끄럽지 않음)

5.5 셀프 호스팅 (Vaultwarden)

# Mac/Linux docker
docker run -d \
  --name vaultwarden \
  -v ./vw-data:/data \
  -p 8000:80 \
  vaultwarden/server:latest

홈 서버에 두고 bw config server http://your-server:8000 으로 전환. Bitwarden 클라이언트 그대로 사용 가능.

6. 양 머신 워크플로

Mac에서 추가한 시크릿이 Windows에서도 즉시 사용 가능 (양쪽 vault 동기화는 자동):

# Mac에서 새 키 추가
op item create --category="API Credential" \
  --title="New Service" \
  --vault="Private" \
  credential="sk-..."
 
# Windows pwsh에서 즉시 사용
op item get "New Service" --fields credential

.env.tmpl 자체는 Git/Syncthing으로 양 머신 공유 (값은 vault에만, 템플릿은 안전).

검증

  1. op vault list 또는 bw list folders — 인증 동작
  2. ssh -T git@github.com — 1Password SSH agent로 인증, Touch ID 한 번
  3. git commit -S -m "test"git log --show-signature → "Good signature" 표시
  4. op run --env-file=.env.tmpl -- env | grep MY_KEY → 실제 값 주입 확인
  5. Windows에서 1Password CLI 로그인 후 같은 vault 접근 가능 확인

트러블슈팅

op CLI가 GUI와 연동 안 됨

  • 데스크톱 → Settings → Developer → "Integrate with 1Password CLI" 체크 누락
  • 데스크톱 앱이 실행 중이어야 함 (로그인된 상태)
  • macOS: 시스템 환경설정 → 보안 → biometric 권한 부여

Bitwarden 세션 만료

기본 30분 idle 후 lock. bw unlock --raw 다시. .zshrc에 자동 unlock 함수 두지 말 것 — 마스터 패스워드가 환경에 남음.

SSH agent 두 개 (1Password vs ssh-agent)

~/.ssh/config에 명시:

Host github.com
  IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

Windows는 환경변수 SSH_AUTH_SOCK 으로.

op run이 quoting 깨짐

op inject 사용 권장 (더 명확): op inject -i .env.tmpl -o .env.runtime && source .env.runtime. 단 평문 파일이 잠시 생성됨 — 끝나면 삭제.

가족/팀 vault 공유 시 권한 문제

1Password Business → vault별 권한. CLI는 어떤 vault에 접근 권한 있는지 op vault list로 확인. 권한 없으면 명령 실패.

참고

변경 이력

  • 2026-05-12: 첫 작성. 1Password vs Bitwarden 비교 + SSH 통합·Git 서명·env 자동 주입·양 머신 워크플로 + 트러블슈팅 5종.

댓글