2026년 10월 26일 · @martin
결론부터 쓰면, 내 조합(맥북 + 우분투 데스크탑·노트북 + 안드로이드, 브라우저는 전부 크롬)에서는 Google 비밀번호 관리자에 패스키 하나만 두는 게 정답이었다. 등록은 안드로이드에서 한 번, 나머지 기기는 크롬 동기화로 따라온다.
왜 패스키를 하나로 묶고 싶었나
나는 하루에도 기기를 여러 번 바꿔 앉는다. 다락방 책상에는 맥북 프로가 있고, 집에는 우분투 데스크탑과 노트북이 돌아가고, 이동 중에는 안드로이드 폰으로 이슈와 PR을 확인한다. GitHub 로그인은 이 네 곳 모두에서 일어난다.
패스키를 처음 켜려고 보니 기기마다 제각각 "여기에 저장할까요?"를 물어왔다. 맥은 iCloud 키체인을, 폰은 Google을, 우분투는 딱히 기본 제공자가 없다. 아무 생각 없이 누르면 기기마다 따로 노는 패스키가 서너 개 생긴다. 그래서 처음부터 구조를 정하고 들어가기로 했다.
원칙: 기기가 아니라 '동기화되는 제공자 한 곳'에
패스키를 기기에 두면 기기 수만큼 관리할 게 늘어난다. 클라우드로 동기화되는 제공자 한 곳에 두면 한 번 등록으로 모든 기기에서 쓸 수 있다.
그래서 고민은 "어느 기기에 둘까"가 아니라 "어느 제공자를 메인으로 삼을까" 하나로 줄어든다. YubiKey 같은 하드웨어 키는 동기화가 안 되는 device-bound 방식이라, 편의성이 목적이라면 메인이 아니라 백업 용도로만 고려했다.
후보 네 가지 비교
맥북이 있으니 iCloud 키체인부터 떠올렸지만, 안드로이드와 우분투에서는 직접 연동이 안 된다. 거기서 로그인할 때마다 다른 기기로 QR을 스캔하는 우회를 거쳐야 한다.
|
제공자 |
맥북 |
우분투 |
안드로이드 |
Firefox |
비용 |
개발 도구 연동 |
|---|---|---|---|---|---|---|
|
iCloud 키체인 |
◎ |
△ QR 우회 |
△ QR 우회 |
— |
무료 |
— |
|
Google 비밀번호 관리자 |
○ 크롬만 |
○ 크롬만 |
◎ 내장 |
✗ |
무료 |
✗ |
|
1Password |
○ |
○ |
○ |
○ |
유료 |
◎ SSH 키·CLI·커밋 서명 |
|
Bitwarden |
○ |
○ |
○ |
○ |
무료~ |
△ |
판단 기준은 결국 세 가지였다. 안드로이드를 얼마나 자주 쓰는지, 브라우저를 하나로 통일했는지, SSH 키까지 한 vault에 묶고 싶은지.
결정: Google 비밀번호 관리자 하나로
내 조건에 대입하니 답이 바로 나왔다. 아이폰은 안 쓰고, 개발할 때 브라우저는 전부 크롬이고, 안드로이드로 GitHub에 들어가는 일이 많다.
- 아이폰이 없으니 iCloud의 강점인 애플 기기 간 동기화가 의미가 없다
- 크롬 통일이니 Google 비밀번호 관리자의 유일한 전제 조건(크롬 전용)을 이미 충족한다
- 안드로이드에는 기본 내장이라 앱 설치나 자동완성 제공자 설정이 필요 없다
SSH 키까지 한 vault로 묶는 1Password도 끌렸지만, 웹 로그인 패스키만 놓고 보면 추가 비용 없이 Google 하나로 충분했다.

안드로이드에서 한 번 등록하면 Google 비밀번호 관리자에 저장되고, 맥북과 우분투 두 대의 크롬은 동기화로 같은 패스키를 받는다. iCloud 키체인은 맥북에서만 비상용으로 둔다.
세팅 순서: 안드로이드에서 먼저 등록한다
맥에서 먼저 등록하면 iCloud로 새기 쉽다. 그래서 등록은 안드로이드에서 하고, 맥과 우분투는 동기화로 받아 쓰는 쪽이 실수가 적었다.
1. 사전 확인 (안드로이드)
- 설정 → 비밀번호·패스키·자동 완성 → 기본 서비스가 Google인지 확인. 삼성폰은 삼성 패스로 새는 경우가 흔하다
- 화면 잠금(지문·PIN·패턴)이 켜져 있어야 한다. 패스키 인증에 이걸 쓴다
2. 등록 (안드로이드 크롬)
- 크롬에서 github.com 로그인
- 프로필 → Settings → Password and authentication → Passkeys → Add a passkey
- 비밀번호로 한 번 재인증
- 시스템 팝업에 "Google 비밀번호 관리자에 저장"이 뜨면 지문으로 인증
- 패스키 이름을 정하고 Done
3. 맥·우분투 크롬 동기화
- 크롬 프로필 아이콘 → 동기화 사용 → 폰과 같은 Google 계정으로 로그인
- 계정 로그인만 하고 동기화를 안 켜면 패스키가 안 내려온다. 이게 제일 흔한 실수다
passwords.google.com이나chrome://settings/passwords에서 GitHub 패스키가 보이면 끝
GitHub 모바일 앱은 따로 등록할 필요가 없다. 시스템 자동완성을 통해 같은 패스키를 꺼내 쓴다. 로그인 화면에 패스키 옵션이 안 보이면 https://github.com/login?passkey=true로 들어가면 된다.
맥의 함정: iCloud가 먼저 끼어든다
동기화까지 마쳤는데 맥 크롬에서 아이디 칸을 누르면 iCloud 비밀번호만 떴다. 크롬 문제가 아니라 macOS가 시스템 전역 자동완성을 iCloud 키체인에 쥐여주고 있어서다.
- 시스템 설정 → 일반 → 자동 완성 및 암호에서 iCloud 암호 자동완성을 끄거나 우선순위를 낮춘다
- 크롬 쪽은
chrome://settings/autofill에서 비밀번호 저장·자동 입력 제안이 켜져 있는지 확인 - 당장은 iCloud 팝업의 "다른 옵션"이나 입력란의 열쇠 아이콘으로 제공자를 고를 수도 있다
덤: localhost:8080 로그인 폼
같은 증상이 로컬 CI4 개발 서버(localhost:8080) 로그인 폼에서도 나왔다. 예전에 iCloud에 저장해둔 localhost 항목이 남아 있고, Google 쪽에는 없으니 iCloud만 보였던 것이다.
이건 패스키와 별개 문제라 자동완성과 씨름하지 않기로 했다. 개발 환경에서만 테스트 계정을 폼에 미리 채운다.
# .env (개발 서버에만)
DEV_LOGIN_ID = admin@local.test
DEV_LOGIN_PW = dev-only-password
// Controller
$devLogin = [];
if (ENVIRONMENT === 'development') {
$devLogin = [
'id' => env('DEV_LOGIN_ID', ''),
'pw' => env('DEV_LOGIN_PW', ''),
];
}
return view('auth/login', ['devLogin' => $devLogin]);
<!-- View -->
<input type="text" name="login_id" autocomplete="off"
value="<?= esc($devLogin['id'] ?? '') ?>">
<input type="password" name="password" autocomplete="off"
value="<?= esc($devLogin['pw'] ?? '') ?>">
.env는 CI4 기본값대로 .gitignore에 들어 있고, 운영 서버 .env에는 이 키를 아예 넣지 않는다.
백업은 따로, CLI 인증은 별개
Google 계정이 잠기면 패스키도 같이 막힌다. 그래서 비상구를 두 개 만들었다.
- GitHub 복구 코드를 내려받아 안전한 곳에 보관한다. 이건 최소한이다
- 맥북 iCloud 키체인에 보조 패스키 하나를 추가 등록한다. GitHub는 패스키를 여러 개 허용한다
그리고 헷갈리기 쉬운 점 하나. 패스키는 웹 로그인용이다. git push나 Claude Code, GitHub Actions에서 쓰는 인증은 기존 SSH 키와 PAT를 그대로 쓴다.
마무리
패스키 세팅의 핵심은 기술보다 결정 순서였다. 제공자를 먼저 하나로 정하고, 가장 많이 쓰는 기기에서 등록하고, 나머지는 동기화에 맡긴다.
아이폰이 있거나 Firefox를 병행한다면 답이 달라진다. 그때는 Bitwarden(무료)이나 1Password(SSH 키까지 통합)가 더 낫다. 내 조합에서는 추가 비용 없이 Google 하나로 충분했다.

댓글 0개