Meandering Trajectory

Bitbucket에 여러 계정이 있을 때 ssh key 설정 본문

컴퓨터

Bitbucket에 여러 계정이 있을 때 ssh key 설정

latentis 2017. 7. 20. 01:51

비공개 저장소를 무료로 쓸 수 있다는 장점 때문에 얼마전부터 Emacs 설정 파일이나 bashrc 같은 것들을 저장할 목적으로 빗버킷(https://bitbucket.org)에 개인 계정을 만들어 쓰고 있다. 비공개 저장소이니 접근할 때[각주:1]마다 인증과정이 필요하고 기본 인증은 (당연히) 함호기반이다. 매번 함호를 입력해야 한다는 것은 여간 귀찮은 일이 아닐 수 없다.

물론 암호를 입력하지 않고 인증을 할 수 있는 방법이 있다. 바로 ssh 키를 통해 인증하는 것인데 그 방법이 아래 페이지에 잘 설명돼 있다.

https://confluence.atlassian.com/bitbucket/set-up-ssh-for-git-728138079.html

짧게 요약하자면 다음 과정을 거쳐 ssh 키 기반 인증을 할 수 있다.

  1. ssh-keygen을 이용해 키쌍 생성

  2. (실행 안 되어 있다면) ssh-agent 실행하고 ssh-add를 이용해 키 추가

  3. 공개키[각주:2]의 내용을 빗버킷에 등록[각주:3]

신경써야 할 점은 키쌍 생성(1번 과정) 중에 ssh-keygen이 암호를 입력하라고 요청하는 단계가 있는데 이때 암호를 입력하지 말고 그냥 엔터를 쳐야 한다는 것이다. 암호를 입력하면 빗버킷 서버와는 키로 인증하지만 ssh-key를 사용할 때 암호를 입력해야 하기 때문에 한쪽 볼의 혹을 떼 다른 쪽에 붙인 겪이 된다.

대충 설명을 했으니 이제 이글을 쓴 원래 목적으로 돌아가자.

빗버킷에 계정이 여러개 있을 수 있다. 필자의 경우 회사가 빗버킷 서비스를 이용해 제품 소스를 관리하고 있어 회사 계정이 하나 있고 개인 설정파일 들을 관리할 목적으로 개인 계정이 하나 있어 빗버킷 계정이 두개다. 이런 상황이라면 어떻게 해야 할까?
혹자는 "그냥 두 계정에 모두 동일한 공개키를 등록하면 되는거 아냐?"라고 할 수 있겠지만, 동일한 키를 서로 다른 계정에 등록하려고 하면 이미 다른 계정에서 사용되고 있다는 에러와 함께 빗버킷에서 등록을 거부한다.

그럴 때는 키를 계정별로 생성하고 별도를 등록해야 한다. 우선 ssh-keygen을 이용해 키를 두개 만든다. 키를 한개 말들고 이름을 변경하고 다시 만들고 이래도 되겠지만 ssh-keygen을 실행하면 다음과 같이 파일이름을 물어보기 때문에 파일이름을 직접 입력하는 것이 편하다.
$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/qcollapse/.ssh/id_rsa):

이제 보안키를 라파지터리 별로 따로 사용하기 위해서 리눅스 계정 홈디렉토리에 있는 .ssh 디렉토리에 config 파일을 만든다. vi 같은 편집기로 파일을 열고
vi ~/.ssh/config
아래와 같은 내용을 담은 파일을 만든다.
Host bitbucket.org-user1
  HostName       bitbucket.org
  IdentityFile   ~/.ssh/user1_rsa
  IdentitiesOnly yes

Host bitbucket.org-user2
  HostName       bitbucket.org
  IdentityFile   ~/.ssh/user2_rsa
  IdentitiesOnly yes

각 계정 이름이 user1과 user2라고 할 때 구분하기 쉽도록 키 이름을 각각 user1_rsa와 user2_rsa로 했다고 가정했다.

이제 두 개의 키를 모두 ssh-add로 등록하고 나면 git clone을 수행할 때 도메인명(bitbucket.org)이 들어갈 자리에 user1_rsa.pub 키가 등록된 계정으로 접속하고 싶을 때는 bitbucket.org-user1를 user2_rsa.pub 키가 등록된 계정으로 접속하고 싶을 때는 bitbucket.org-user2를 사용하면 두 계정 모두 문제 없이 git을 암호 입력 없이 사용할 수 있다.

git clone git@bitbucket.org-user1:user1/goodcode.git


  1. push나 pull 등을 수행할 때 [본문으로]
  2. ssh-keygen을 이용해 키를 생성하면 .pub 확장자를 가진 파일로 확장자가 없는 파일이 나오는데 이 중 .pub 확장자를 가진 파일이 공개키다. [본문으로]
  3. 빗버킷에 로그인하면 왼쪽 아래 사람 모양 아이콘(사진을 등록한 경우 프로필 사진)이 있다. 거길 클릭하면 Bitbucket setting이라는 링크가 있는데 거길 따라가면 ssh key 등록을 할 수 있는 페이지가 뜬다. [본문으로]
Comments