컴공생의 다이어리
[Git] 컴퓨터에 github 계정 여러개 연동하기 : ssh-key 발급, 등록 본문
컴퓨터에 github 계정 여러개 연동하기 : ssh-key 발급, 등록
github 계정이 부캐처럼 몇개 있는데 컴퓨터에서 각각의 계정에 대한 repository를 clone하고 commit을 push하는 것을 나는 Github Desktop을 사용해서 관리했다.
하지만 Github Desktop을 사용해서 repository를 관리하려면 매번 로그인과 로그아웃을 반복해야 했으며 간혹 아래 사진의 체크한 부분이 제대로 내 프로필이 맞는지 확인하지 않으면 간혹 다른 계정으로 커밋이 되는 경우가 있어서 커밋이 꼬이는 경우가 있었다.
그동안 계정 여러개가 있을 때, ssh key를 사용하면 된다는 것은 알고 있었지만 복잡할 것 같아 외면하고 있었는데 이제는 사용해야겠다고 생각되어 이 글을 정리하게 되었다. 윈도우 기준으로 작성되었지만 기본 파일 위치를 제외하고 거의 모든 프로세스가 mac, ubuntu 등과 같다.
ssh-key 생성
터미널에 ssh-keygen -t rsa -C "이메일 주소"를 입력한다. 물론 여기서 이메일 주소는 github 각 계정에 해당하는 이메일 주소이다.
ssh-keygen -t rsa -C "example@gmail.com"
명령어를 입력하면 위와 같이 화면이 나올텐데 Enter file in which to save the key는 ssh-key를 어디에 저장할 것인지를 말하는 것이다. 그냥 엔터를 치면 기본적으로 지정된 위치와 파일명으로 저장된다. 파일명의 경우 계정을 구분지을 수 있는 것으로 설정하는 것이 좋을 것 같다.
이 다음에 Enter passphrase (empty for no passphrase)라는 것이 나올텐데 그냥 엔터를 쳐도 무방하다고 생각하기 때문에 엔터를 치고 넘어가준다.
이 과정이 끝나면 .ssh 폴더 밑에 id_rsa과 id_rsa.pub 파일이 생성될 것이다. 물론 설정한 파일명에 따라 다르겠지만 2개의 파일(파일명, 파일명.pub)이 생성된다.
ssh-key 적용
그다음 .ssh 폴더 밑에 기존에 config 파일이 있다면 열어서 지금 말할 내용을 추가해주고 config 파일이 없다면 생성하고 안에 아래와 같이 내용을 넣어주면 된다.
(위의 ssh-key 생성 과정에서 id_rsa_userA와 id_rsa_userB키를 각각 생성했다고 가정하고 config 파일을 작성했다.)
# 계정 1
Host github.com-userA
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_userA
# 계정 2
Host github.com-userB
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_userB
Host 키워드 뒤에는 github repository에 연결할 url 이름이다. 원하는 이름을 작성하면 된다. 그 다음 IdentityFile 키워드 뒤는 ssh-key 파일 위치를 넣어주면 된다.
ssh-key 등록
ssh-add 명령어를 입력해 ssh-key를 등록해준다.
ssh-add ~/.ssh/id_rsa_userA # 첫번째 key 등록
ssh-add ~/.ssh/id_rsa_userB # 두번째 key 등록
만일, Could not open a connection to your authentication agent라는 에러가 발생한다면 아래 명령어를 입력해준후 위의 명령어(ssh-add ~)를 다시 입력해주면 된다.
eval $(ssh-agent)
ssh-key 복사 및 Github에 등록
아래와 같이 명령어를 입력하면 ssh-key 값이 나오는 데, 이 값을 복사한 후 github에 등록하면 된다. 이때 주의해야 할 점은 ssh-key 값을 복사할 때, 확장자가 .pub인 파일을 복사해야 한다는 것이다.
cat .ssh/id_rsa_userA.pub
그 다음 Github 페이지에서 settings-> SSH and GPG keys -> New SSH key를 들어가서 앞서 복사한 ssh-key를 붙여넣어준다.
이제 정상적으로 연결이 되는지 확인해 보기 위해서 ssh -T [host] 명령어로 확인한다. 이때, [host] 위치에는 앞서 config 파일에서 설정한 host 이름을 사용해야 한다. 만일 정상적으로 연결이 된다면 Hi [계정명]! You've successfully authenticated, but GitHub does not provide shell access.가 보일 것이다.
ssh -T github.com-userA
ssh -T github.com-userB
Github repository clone
Github repository에서 Code 버튼을 누르고 SSH 탭을 누르면 위와 같이 나올 것이다. 여기서 나오는 git@github.com:github계정/repo이름.git을 복사하고 git bash 창에 아래 명령어를 통해 clone해준다. 이때, git@뒤에 .ssh/config 파일에서 정한 Host 이름을 넣어줘야 한다. 이렇게 하면 Host에 맞는 ssh키를 찾아 clone을 한다.
git clone git@github.com-userA:github계정/repo이름.git
clone을 했으면 마지막으로 git의 global 계정과 충돌하지 않고 따로 계정을 관리해주기 위해 clone한 로컬 repository에서 아래 명령어를 통해 계정을 설정해준다.
git config --local user.name "Your Name"
git config --local user.email "Your Email"
'Development > Git' 카테고리의 다른 글
[Git] .gitignore 자동 생성 (0) | 2021.11.09 |
---|---|
[Git] 원격 저장소(remote repository)의 branch를 로컬 저장소(local repository)로 가져오기 (0) | 2021.09.30 |
[Git] 깃 사용자(user) 이름(name) 및 이메일(email) 확인, 변경, 삭제 (0) | 2021.09.25 |
[Git] 깃 로컬 저장소 default branch 변경하기 (0) | 2021.09.24 |
[GitLab] 깃랩 fatal authentication failed 오류 (0) | 2021.09.13 |