Password Store(pass)는 GNU Privacy Guard(GPG)와 Git을 활용해 Linux 시스템의 비밀번호를 안전하게 보관하고 관리하는 간결한 UNIX 프로그램입니다. 가볍고 빠르며 구조가 단순하다는 것이 가장 큰 장점입니다. 다만 이러한 단순함 때문에 저장된 비밀번호를 꺼내 쓰는 과정이 다소 번거롭게 느껴질 수 있습니다. 다행히 Emacs 사용자라면 이 과정을 매끄럽게 자동화할 수 있습니다.
password-store는 Password Store 프로그램의 프런트엔드 역할을 하는 Emacs 패키지입니다. 백엔드와 마찬가지로 심플하고 가벼우며, 커뮤니티에서 만든 다양한 플러그인으로 기능을 손쉽게 확장할 수 있다는 점도 큰 매력입니다.
Password Store의 작동 방식
Password Store는 순수 텍스트 파일 형태로 비밀번호를 생성하고 수정하는 극도로 단순한 비밀번호 관리자입니다. 계정마다 하나의 텍스트 파일만 유지합니다.
평문 저장이라 안전하지 않아 보일 수 있지만, Password Store는 관리하는 모든 파일을 GPG로 암호화합니다. 덕분에 평문의 유연성과 GPG의 강력한 암호화 보안을 동시에 누릴 수 있습니다.
프로그램이 단순한 파일만 다루기 때문에 폴더별로 분류·정리하는 것도 자유롭습니다.
또한 첫 줄만 비밀번호로 확보하면 되기 때문에 나머지 공간에는 부가 정보를 자유롭게 추가할 수 있습니다. 예를 들어 포럼 계정용 비밀번호 파일은 다음과 같이 작성할 수 있습니다.
thisismysupersecretpassword ===============INFORMATION============== Username: MySuperCoolName Security Question 1: Yogi Security Question 2: 1992 Toyota Corolla Security Question 3: Smith OTP Key: aabbccddff11223344 ========================================
Password Store는 첫 줄 이후의 내용을 읽지 않으므로, 계정 관련 추가 정보를 마음대로 기록할 수 있습니다. 즉, 사용자 지정 디렉터리 구조와 사용자 지정 파일 형식을 모두 활용할 수 있는 셈입니다.
Password Store 설치하기
구조가 단순한 만큼 설치도 쉽고, 대부분의 Linux 배포판에서 패키지로 제공됩니다.
Debian 및 Ubuntu에서는 apt를 사용합니다:
sudo apt install pass gnupg
Fedora에서는 dnf를 사용합니다:
sudo dnf install pass gnupg2
Arch Linux에서는 pacman을 사용합니다:
sudo pacman -S pass gnupg
비밀번호 저장소 만들기
설치가 끝나면 저장소 생성을 위해 두 가지만 준비하면 됩니다.
- GPG 키 준비: 저장소와 연결할 GPG 키가 필요합니다. 새로 생성해도 되고, 기존에 사용 중인 키를 재사용해도 됩니다.
- 저장소 초기화: GPG 암호화만 적용된 단순 저장소 또는 GPG와 Git으로 버전 관리되는 저장소 중 선택할 수 있으며, 어느 쪽이든 명령어 한 줄로 생성됩니다.
저장소용 GPG 키 생성하기
Password Store는 모든 암호화를 GPG에 의존합니다. 따라서 본인만 복호화할 수 있도록 자신만의 GPG 키를 만드는 것이 필수입니다.
- 다음 명령어로 키 생성 마법사를 실행합니다:
gpg --full-generate-key
- 마법사가 실행되면 키에 대한 여러 옵션을 선택할 수 있습니다.
- 암호화 알고리즘을 묻는 질문에는 대부분 기본값인 RSA로 충분합니다. Enter 키를 눌러 선택하세요.
GPG 키 길이와 만료일 설정하기
- 다음으로 키 길이를 지정합니다. 일반적으로 긴 키일수록 해독이 어렵습니다. 이 글에서는 4096비트를 선택했습니다.
- 키 만료 여부를 설정합니다. 특정 날짜에 만료되는 키를 사용하는 것이 좋은 습관으로 꼽힙니다. 키가 유출되었거나 암호를 잊어버렸을 때 자동으로 무효화할 수 있기 때문입니다.
- 저는 개인적으로 잊어버리지 않도록 짧은 만료 기간을 선호하여 "6m(6개월)"로 설정했습니다.
- 이름과 이메일을 입력합니다. 이 정보는 데이터를 암호화하거나 복호화할 때 표시 용도로만 사용됩니다.
- 마지막으로 키 접근용 암호를 설정합니다. 이 암호는 저장소에 접근할 때마다, 즉 기존 비밀번호를 복사하거나 새 비밀번호를 추가할 때마다 요구되므로 강력하면서도 기억하기 쉬운 것으로 정하세요.
저장소 시작하기
GPG 키가 준비되었다면 이제 Password Store를 초기화할 차례입니다. 두 가지 방식이 있습니다.
- 단순 저장소: 기본 GPG 암호화만 적용된 저장소로, 비밀번호를 간편하게 보관하고 조회하고 싶을 때 적합합니다.
터미널에서 다음 명령어를 실행합니다:
cd /home/$USER/ && pass init "your-gpg-email"
홈 디렉터리에 ".password-store"라는 이름의 저장소가 생성됩니다.
- Git 버전 관리 저장소: 변경 이력을 세밀하게 추적할 수 있어 언제든 이전 상태로 되돌릴 수 있습니다. 비밀번호를 자주 바꾸는 사용자에게 특히 유용합니다.
Git 버전 관리 저장소를 원한다면 다음 명령어를 실행합니다:
pass git init
이렇게 하면 저장소에 Git 저장소가 초기화됩니다. 이후에는 git 명령어 앞에 "pass"를 붙여 그대로 사용할 수 있습니다. 예를 들어 저장소의 모든 원격 저장소를 확인하려면 다음과 같이 실행합니다:
pass git remote get-url --all
Emacs와 Password Store 연동하기
Emacs 사용자라면 Password Store를 Emacs 클라이언트에 통합할 수 있습니다. 먼저 MELPA 저장소에서 "password-store" 패키지를 받아야 합니다.
MELPA는 기본 Emacs 설치에 포함되어 있지 않으므로, 설정 파일에 직접 추가해야 합니다.
- "init.el" 파일에 다음 코드를 작성합니다:
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(package-initialize)
- 변경 사항을 적용하려면 Emacs를 다시 시작합니다.
- Alt + X를 누른 뒤
package-install을 입력하면 패키지 이름을 묻는 버퍼가 열립니다.password-store를 입력하세요.
- Emacs가 소스 코드를 내려받아 컴파일하고 설치합니다. 완료 후 Alt + X를 누르고
password-store-version을 입력해 명령어가 정상 등록되었는지 확인할 수 있습니다.
새 비밀번호 추가하기
- 연동이 끝나면 저장소 접근은 매우 간단합니다. Alt + X를 누른 뒤
password-store-insert를 입력하면 새 비밀번호를 추가할 수 있습니다. - 추가할 비밀번호 항목의 이름을 묻는 프롬프트가 나타납니다.
- 이제 실제 비밀번호를 입력합니다. 다른 비밀번호 입력창과 마찬가지로 입력 내용은 화면에 표시되지 않습니다.
저장소 항목 편집하기
Password Store의 핵심 강점 중 하나는 비밀번호 파일을 자유롭게 커스터마이징할 수 있다는 점입니다. 어떤 형식이든 원하는 정보를 담을 수 있습니다.
- 항목을 편집하려면 Alt + X를 누른 뒤
password-store-edit을 입력합니다. - 편집할 항목 이름을 묻는 프롬프트가 열립니다. 예를 들어 "forum-account" 항목에 보안 질문을 추가한다고 가정해 보겠습니다.
- GPG 키 암호를 입력하면, Emacs가 별도 버퍼에 해당 비밀번호 파일의 내용을 불러와 편집할 수 있게 해줍니다.
- 편집이 끝나면 Ctrl + X, Ctrl + S로 파일을 저장합니다. 이후 Ctrl + X, K를 눌러 버퍼를 닫으면 Password Store가 변경 사항을 파일 트리에 반영(커밋)합니다.
저장소에서 비밀번호 삭제하기
삭제 역시 간단합니다. Alt + X를 누른 뒤 password-store-remove를 입력하면 삭제할 항목 이름을 묻는 프롬프트가 나타납니다.
예를 들어 더 이상 방문하지 않는 사이트의 오래된 비밀번호를 지우고 싶다면 "my-old-password"를 입력하고 Enter를 누르면 됩니다.
저장소에서 비밀번호 복사하기
마지막으로, 이 패키지는 Emacs에서 바로 비밀번호를 클립보드로 복사하는 기능도 제공합니다. 서비스나 계정에 로그인할 때 저장소에 신속하게 접근해야 하는 상황에서 매우 유용합니다.
- Alt + X를 누른 뒤
password-store-copy를 입력합니다. - 클립보드로 복사할 항목 이름을 묻는 프롬프트가 열립니다.
이것으로 끝입니다! 이제 Emacs를 비밀번호 관리자로 활용하는 기본적인 방법과, Password Store라는 파일 기반의 심플한 비밀번호 관리 도구의 사용법을 익히셨습니다.
자주 묻는 질문
1. KeepassXC처럼 비밀번호를 자동 생성할 수 있나요?
네, 가능합니다! 이 패키지는 기본적으로 새 계정용 비밀번호 생성 기능을 제공합니다. Alt + X를 누른 뒤 password-store-generate를 입력하세요.
새 계정 이름을 입력하면 충분히 무작위적인 비밀번호가 자동 생성됩니다. 생성된 비밀번호는 앞서 설명한 password-store-copy 함수로 복사할 수 있습니다.
2. 일회용 비밀번호(OTP) 기능도 연동할 수 있나요?
네, 가능합니다! Password Store에는 명령줄에서 OTP를 관리할 수 있는 훌륭한 플러그인이 있습니다. 사용하려면 OTP 생성용 추가 패키지를 설치해야 합니다.
Debian과 Ubuntu에서는 다음 명령어로 설치합니다:
sudo apt install pass-extension-otp
Fedora에서는 dnf를 사용합니다:
sudo dnf install pass-otp
Arch Linux에서는 pacman을 사용합니다:
sudo pacman -S pass-otp
설치 후 다음 명령어로 계정에 OTP 링크를 등록합니다:
pass otp insert "account-name"
이후 pass otp "account-name"을 실행하기만 하면 해당 계정의 OTP 코드가 생성됩니다.
3. Emacs에서 비밀번호 목록을 트리 형태로 볼 수 있나요?
아쉽게도 트리 뷰는 지원하지 않습니다. 다만 미니버퍼 완성(minibuffer completion) 패키지를 사용하면 탭 완성으로 전체 비밀번호 목록을 탐색할 수 있습니다.
이 기능을 제공하는 대표적인 패키지는 helm과 mct입니다. 두 패키지 모두 GNU ELPA 저장소에서 배포되므로 package-install 함수로 손쉽게 설치할 수 있습니다.