Close

macOS 기본 도구만으로 Touch ID 보호 SSH 키 만들기

nmattia.com에 올라온 글이 GeekNews에 소개됐다. 서드파티 앱 없이 macOS에 들어 있는 도구만으로 Secure Enclave에 SSH용 신원을 만들고, 인증할 때마다 Touch ID로 승인하게 하는 방법이다. 개인 키는 칩 밖으로 나오지 않고 서명도 칩 안에서 이뤄진다.

핵심 내용

  • 설정은 명령 세 개다. sc_auth create-ctk-identity -l ssh-key -k p-256-ne -t bio로 신원을 만들고, ssh-add -K -S /usr/lib/ssh-keychain.dylib로 에이전트에 등록한다. 서버에 올릴 공개 키는 ssh-add -L로 확인하며, sk-ecdsa-sha2-nistp256으로 시작하는 줄이 해당 키다. GitHub에도 그대로 쓸 수 있다.
  • 키 옵션의 의미. -ne는 추출 불가 키이고, OpenSSH가 p-384 곡선을 지원하지 않아 여기서는 p-256-ne를 쓴다. 보호 방식 bio는 사용할 때마다 생체 인증을 요구하고, none은 키는 여전히 추출할 수 없지만 프로그램이 승인 없이 서명에 쓸 수 있다.
  • 동작 원리. ssh-keychain.dylib가 SSH 에이전트와 Secure Enclave 사이를 잇는 FIDO 방식 제공자 역할을 한다. 서버가 공개 키를 받아들이면 에이전트가 서명을 요청하고, Touch ID를 승인해야 서명이 돌아온다. 등록할 때 나오는 PIN 입력은 비워 두고 Enter를 누르면 되고, 보안은 Touch ID에 의존한다.
  • 제약이 분명하다. 재부팅하면 에이전트에 다시 등록해야 한다. 키를 내보낼 수 없으니 Mac이 고장 나면 신원도 사라지고, 새로 만들어 서버마다 다시 등록해야 한다.
  • 문서화되지 않은 영역이 많다. 내부 동작 설명 일부는 기존 조사와 매뉴얼, 직접 실험에 바탕을 둔 추정이며 안전성을 완전히 검증한 것은 아니라고 글쓴이도 밝혔다.

실무에서 가장 와닿는 점은 키 파일 유출 걱정을 구조적으로 없앨 수 있다는 것이다. ~/.ssh에 개인 키 파일이 남지 않으니 실수로 커밋하거나 백업에 딸려 나갈 일이 없다. 개발자 노트북에서 GitHub 접근에 쓰는 키부터 바꿔 보기 좋다. 기기마다 별도 키를 발급해 기기 단위로 권한을 끊는 운영 방식과도 잘 맞는다. 다만 원격 서버 접속이 잦은 작업, 예를 들어 Ansible이나 SSHFS로 여러 호스트에 자동 접속하는 환경에서는 매번 승인 요청이 뜨는 것이 부담이다. 댓글에서는 이럴 때 -t none을 쓰라는 의견이 나왔는데, 앞서 정리했듯 이 경우 프로그램이 승인 없이 키를 쓸 수 있으니 위험과 편의를 따져 정해야 한다.

운영 면에서는 두 가지를 챙겨야 한다. 첫째, 키를 백업할 수 없으므로 서버 쪽에 관리자 접근용 대체 수단을 반드시 따로 두어야 한다. 이 키 하나에만 의존하면 Mac 고장 때 접속 경로가 끊긴다. 둘째, 재부팅 뒤 재등록이 번거롭다면 댓글에서 소개된 SSH_SK_PROVIDER 환경 변수로 제공자 경로를 지정해 ssh-add -K만 입력하는 방법이 있다. 앱 형태가 편하다면 Secretive 같은 기존 도구도 대안이다. 팀 단위 배포가 목적이라면 댓글에서 언급된 SSH 인증서 방식이 더 맞을 수 있다.


원문: macOS에서 Touch ID로 SSH 키 설정하기 (GeekNews)

Leave a Reply

Your email address will not be published. Required fields are marked *

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

© 2026 NORICOMPANY