이걸 사용기로 가야 하나, 팁과 강좌로 가야하나 많이 고민하긴 했는데...
(팁과 강좌로 가기엔 좀 부족하다 싶기도 하고...)
그냥 여기에 쓰기로 했습니다.
-----------------------------------------------------------------------------------------------------
패스워드 관리는 최대의 난제라 생각합니다.
단순해서도 안되고, 동일한 패스워드를 여러 사이트에 사용해도 안되지요.
몇 년 전부터는 1password라던지 lastpass 같은 다양한 솔루션이 나오긴 했는데,
유료기도 하고 일단 마스터 패스워드가 뚫리면 소용 없다는 문제도 있지요.
게다가 대부분 브라우저 플러그인이라던지를 사용해야 하고...
그래서 찾다 보니 좋은게 있더군요.
표준 유닉스 패스워드 관리자. 라는 이름이 붙은 pass
일단 사이트는 여기입니다.
https://www.passwordstore.org/
저는 메인이 맥과 아이폰인데 좋네요 :)
윈도우에서도 linux for windows를 사용해서 bash 터미널에도 설치해서 사용할 수 있습니다.
Pass4Win이라는 윈도우 전용 클라이언트도 사이트 하단에 링크가 있긴 하지만.. 써보진 않았습니다 _ _);
맥 기준으로만 한 번 설명해보겠습니다.
1. 설치
먼저 사용을 위해서는 설치를 해야겠지요?
설치는 간단합니다.
brew install pass
끝.... -_-
근데 이게 끝은 아니고, gpg가 반드시 있어야 합니다.
요기 참조해보시면 됩니다. 그냥 간단하게 설치 부분만 보셔도 되고
GPG가 뭐하는 놈인지 한 번 가볍게 읽어보셔도 좋습니다.
(정말 간단하게... 공개키 암호화 프로그램입니다.)
https://gpgtools.org/ 여기서 GUI용 플그램을 받으셔도 되고
brew install gpg2 로 설치하셔도 됩니다.
2. 키 만들기
설치가 완료되면 키를 만들어야 합니다.
이미 GPG를 사용중이신 분들이라면 스킵해도 되겠지요?
터미널에서 gpg2 --gen-key 로 만드셔도 되고
위에서 소개한 GUI 프로그램(GPG Keychain)에서 만드셔도 됩니다.
터미널에서라면 아래오 같이 만든 키 확인이 가능합니다.
❯ gpg2 --list-keys
/Users/genmai/.gnupg/pubring.kbx
--------------------------------
pub rsa2048 2018-05-01 [SC] [expires: 2020-04-30]
[앞은 생략]3C0240D6
uid [ultimate] Genmai <genmai@genmai.com>
sub rsa2048 2018-05-01 [E] [expires: 2020-04-30]
다르게 나올 수도 있는데, 제일 뒤의 8자리 문자열이 키 ID가 됩니다(3C0240D6).
3. 초기화하기
2에서 만든 키 ID를 이용해 초기화를 합니다.
❯ pass init 3C0240D6
이렇게 하면 pass는 해당 키를 이용해 모든 패스워드를 암호화 합니다. 키가 없으면 패스워드를 볼 수 없지요.
여기서 만들어진 패스워드는 ~/.password-store/ 디렉토리 아래에 저장됩니다.
각 패스워드는 .gpg 파일에 암호화돼 저장되지요. cat 같은 명령어로 파일 확인해봐도 암호화된 내용만 나옵니다.
[그냥은 당연히 안보이고]
[pass 명령을 통하면 보입니다. 참고로 깨진게 아닙니다. 강력한 암호 설정 결과일 뿐...]
4. 본격 이용
만약 클리앙 패스워드를 저장하고 싶다면 insert 옵션을 주고 패스워드를 저장하면 됩니다.
디렉토리 형태로 관리되기 때문에 잘 생각해서 저장하시면 좋지요.
❯ pass insert Community/clien.net
mkdir: created directory '/home/genmai/.password-store/Community'
Enter password for Community/clien.net: [패스워드 입력]
Retype password for Community/clien.net: [패스워드 재입력]
잘 들어갔는지 확인하기 위해서는 그냥 pass만 입력하면 됩니다.
❯ pass
Password Store
└── Community
└── clien.net
저장된 내용을 보기 위해서는 입력한 사이트명을 치면 됩니다.
❯ pass Community/clien.net
[입력한 패스워드 표시]
근데 이것도 터미널에 표시되니 싫을 수 있지요. 이 때는 -c 옵션을 사용합니다.
❯ pass -c Community/clien.net
Copied Community/clien.net to clipboard. Will clear in 45 seconds.
이렇게 하면 클립보드에 자동으로 복사가 됩니다. 그리고 클립보드에 저장된 패스워드는 45초 후 파기됩니다.
4.1. 패스워드 생성
당연히 패스워드도 생성 가능합니다. generate 옵션을 사용하면 됩니다.
pass generate [디렉토리/사이트] [생성할 패스워드 자리수]
❯ pass generate Bank/Hana_Bank 10
The generated password for Bank/Hana_Bank is:
>Adf#2aG0!
확인해보면 역시 잘 들어가 있을겁니다.
❯ pass
Password Store
├── Bank
│ └── Hana_Bank
└── Community
└── clien.net
* generate도 -c를 추가로 주고 패스워드가 표시되지 않게 생성할 수 있습니다.
4.2. 여러 정보를 넣기
이렇게만 하면 패스워드 정보 밖에 들어가지 않는데요.
insert에 -m 옵션을 넣어서 여러 줄의 정보를 넣을 수 있습니다.
정보를 다 넣은 뒤 Ctrl + D로 저장이 됩니다.
참고로 이 때는 가장 첫 줄이 클립보드에 저장이 되기 때문에 가장 위의 열을 패스워드로 저장하는 것이 좋습니다.
그 외, edit 옵션에서 수정하는 것도 가능합니다.
(vi로 연결됩니다.)
5. git 연동
갈아타게 된 결정적인 이유인데, git을 지원합니다.
pass git 형태로 git 명령을 그대로 이용할 수 있습니다.
저같은 경우는 시놀 나스에 git 서버를 올려 집과 회사, 아이폰에서 사용하고 있습니다.
pass에 정보가 추가될 때 마다 자동으로 커밋이 되고, pass git push/pull 로 업데이트 하면 됩니다.
.password-store 디렉토리에서 pass git init 으로 저장소 초기화를 해주고 사용하면 됩니다.
간단하게 주욱 써내려가다 보니 좀 설명이 불친절할 수 있겠다 싶네요.
리눅스나 맥을 주로 쓰신다면 굉장히 좋은 툴이라 생각합니다.
윈도우 10 사용자 분이라도 어렵지 않게 사용 가능할 것 같습니다.
그리고....
일단 괜히 폼납니다 =_=
(회사에서 종종 사람들 있을 때 쓰는데... 멋지다고 =ㅂ=)
일부 가렸습니다 'ㅅ'
본문을 봐도 무슨말인지 모르겠어요 ㅜ.ㅜ
항상 아이폰을 사용하기도 하고요.
id 관리도 가능한지요?
그리고, 아이폰 등에서는 어떻게 사용하는지도 새로운 강좌로 열어주시면 고맙겠습니다.
pass insert -m test-directory/test 로 패스워드와 아이디 정보를 집어넣어 보았는데요..
pass test-directory/test 등과 같이 명령을 치면 다음과 같이 터미널에 정보가 쌩으로 보이네요.
❯ pass test-directory/test
testpassword
id: testid
저는 '강력한 암호 설정의 결과'가 안 나타나는 것 같아서(생짜로 다 보여서...) 질문을 드립니다. 원래 이렇게 생짜로 다 보이는게 맞는지요?
만약 그렇다면, 터미널 열어놓고 화장실 다녀올 때 누군가가 pass 명령어만 쳐서 주욱 살펴볼 수 있을 위험도 있네요. 혹시 pass 명령어를 칠 때마다 passphrase를 집어넣어야만 하도록 설정이 가능한지요?
제가 만든 예제에서, 패스워드 부분인 testpassword 는 클립보드에 복사를 하되, 2줄 이상의 정보가 있을 경우 1줄은 보여주지 않고 나머지 줄들은 다음 명령어로 가능합니다만 좀 느리네요. ^^
❯ pass -c test-directory/test; pass test-directory/test | tail -n +2
pass 정도의 기능을 하는데 브라우저 플러그인이 필요하지는 않아요.
pass 역시 브라우저 플러그인이 있네요.