오류 노트

SourceTree Git 여러 계정 사용하기 (SSH)

Railly Linker 2023. 8. 30. 10:57

- Github 계정 정리를 하여,

회사용 프로젝트 계정과 개인 계정을 분리한 후,

한 컴퓨터에서 사용하려 했을 때,

SourceTree Push 를 하였을 때, Permission Denied 에러가 발생했습니다.

아마도 처음 등록했던 계정의 계정 정보만 사용하는것 같아 보이는데,

SourceTree 를 사용했을 때, 여러 계정을 사용하는 방법을 정리합니다.

 

- 방법 설명 :

A 계정으로 로그인된 소스트리로 B 계정에 Git 명령을 내릴때, 소스트리 로그인 정보를 사용하지 않고,

B 계정에 종속된 SSH 의 비밀키를 사용하는 것입니다.

반대로, A 계정으로 Git 명령어를 내릴때는 A 계정에 종속된 SSH 비밀키 파일을 사용하도록 변경해주면 됩니다.

 

프로세스를 정리하자면,

 

1. A 계정용으로 사용할 SSH 비밀키를 생성

2. 생성된 비밀키의 공개키를 GitHub 계정에 등록

3. SourceTree 에서 A 계정에 명령을 내릴 때에는 A 계정용 SSH를 사용하라고 설정

4. B 계정 역시 마찬가지로, SSH 비밀키 생성 후 GitHub 계정에 등록

5. SourceTree 에서 B 계정에 명령을 내릴 때에는 B 계정용 SSH를 사용하라고 설정

 

입니다.

 

파일을 스위칭 하는 것이므로 깔끔하게 계정 스위칭이 가능합니다.

 

- SSH 키 만들기.

SourceTree 의 도구 - SSH Key 생성 또는 불러오기 클릭

SSH Key 생성 설정 열기

Actions 의 Generate 클릭 후 PuTTY Key Generator 창 위로 마우스 커서를 무작위로 움직여서 난수가 생성되도록 합니다.

PuTTY Key Generator 화면
PuTTY Key Generator 에서 난수 생성 완료된 화면

만약 비밀번호를 설정하길 원한다면, Key passphrase 에 비밀키 열람에 사용할 비밀번호를 설정하고, Confirm passphrase 에 동일한 비밀번호를 입력한 후, Save private key 버튼을 눌러서 원하는 경로, 원하는 파일명으로 저장해둡니다.

비밀번호 입력시, 해당 파일이 탈취되더라도 비밀번호를 입력해야 하기에 안전하지만, SourceTree 에서 매번 비밀번호를 입력해야 하기에 번거로울수 있습니다.

 

비밀번호를 설정하지 않는다면 그냥 Save private key 버튼을 눌러서 저장하면 되는데, 이 경우에는 절대 해당 파일이 탈취되지 않도록 주의해주세요.(최악의 경우, 해당 키를 얻은 외부인이 내가 작성한 프로젝트 히스토리를 모조로 없애버릴 수 있습니다.)

 

이 비밀키는 내 SSH 키값을 저장하며, 추후 동일한 키를 재활용하려 할때 사용되므로 잘보관해둡니다.

 

테스트를 위해, Actions 에 Load 를 눌러서 저장한 파일을 선택하면, 비밀번호 입력창이 나올텐데, 비밀번호를 입력하고나면 SSH 조회가 가능합니다.

 

Git 설정에 등록용으로 사용하기 위하여, Key 부분에, Public key for pasting into OpenSSH authorized_keys file: 아래의 문자열은 텍스트 파일로 잘 보관해두세요.

key passphrase 를 입력했을 때

 

- GitHub 등록

Github 사이트로 가서 로그인을 합니다.

우측 프로필 사진 버튼을 누르세요.

Github 화면에서 프로필 사진 클릭

메뉴에서 Settings 를 누르세요.

Github 계정 Settings 버튼 클릭

SSH and GPG keys 항목에서, New SSH key 를 누르세요.

SSH Key 생성 버튼 누르기

앞서 저장해둔 SSH public key 를 입력하세요.

타이틀은 원하는대로 하면 됩니다.

SSH 키 입력

Add SSH key 를 누르면 아래와 같이 등록된 SSH 키를 볼 수 있습니다.

SSH 키가 생성되었을 때 화면

 

- SourceTree 등록

SourceTree 프로그램에서 Git 명령을 내릴 때 사용하기 위해 등록을 해야합니다.

 

도구 - 옵션을 누르세요.

소스트리 옵션 버튼 누르기

일반 - SSH 클라이언트 설정 에서 SSH 키 옆의 ... 버튼을 눌러, 앞서 생성한 SSH private 키를 선택하고 확인을 누릅니다.

소스트리 옵션의 SSH 클라이언트 설정시 화면

 

이 작업은, 위에서 설명했듯, 계정 스위칭과 동일합니다.

A 계정에 명령을 내리려면 A 의 SSH 파일을, B 계정에 명령을 내리려면 B 의 SSH 파일을 설정해주세요.

 

- 테스트

기존에 SourceTree 에 있던 계정들을 지워줍니다.

SSH 가 적용되어있지 않다면, 그냥 깔끔하게 다시 설정하려는 의도입니다.

 

도구 - 옵션

소스트리 옵션 버튼 누르기

인증탭

인증 탭 누르기

계정 정보 클릭 후 삭제 버튼 누르기

계정들 삭제 버튼 누르기
저장된 비밀번호도 모두 날리기
비워진 인증탭

추가 버튼을 눌러서 계정을 추가해줍니다.

OAuth 로 인증하면 되며, 선호 프로토콜을 SSH 로 변경해줍니다.

SSH 프로토콜 선호로 계정 로그인하기
추가된 계정 정보

여기까지 해서, 앞서 SSH 설정한 계정을 추가한 것입니다.

 

Github Repository 로 이동해서, Clone 할 주소를 선택합니다.

물론 SSH 프로토콜 입니다.

Github 프로젝트에서 SSH Clone 주소 복사

소스트리 Clone 에 저장소를 붙여넣었는데, 저는 에러가 나네요.

소스트리 Clone 화면에서 SSH Clone 주소 붙여넣기

세부사항을 보니,

The host key is not cached for this server: github.com

라는 에러가 났기에, 이를 구글링해서 보니,

에러 발생시 화면

 

C:\Users\prowd\AppData\Local\SourceTree\app-3.4.14\tools\putty

위와 같은 경로(prowd 는 자기 사용자 명입니다.)로 이동 후,

putty 경로 화면

커맨드라인을 열고,

커맨드라인으로 putty 경로로 이동

cd 명령어로 해당 위치로 이동합니다.

거기서

plink.exe github.com

를 입력하세요.

 

만약 gitlab 계정이라면,

plink.exe gitlab.com

을 입력하세요.

 

Store Key in Cache? 라는 물음에 y 를 누르고 엔터를 치면 됩니다.

 

login as: 라고 나오면 그냥 엔터를 치세요.

에러가 뜰텐데, 그래도 문제는 없습니다.

설정 완료 후 에러가 발생

다시 소스트리 Clone 으로 가서 주소를 다시 입력했을 때,

다시 소스트리 Clone 시도

위와 같이 정상적으로 표시되므로 클론 버튼을 누르면 됩니다.

 

push 가 잘 되는지 테스트하기 위해 사소한 부분을 수정하여 Push 를 하면,

테스트를 위한 커밋
테스트를 위한 커밋 완료
테스트를 위한 푸시
테스트를 위한 푸시 완료

잘 됩니다.

 

- 다른 계정 추가

다른 계정 추가 역시 마찬가지입니다.

원하는 다른 계정의 GitHub 설정에 들어가서 SSH public key 를 등록하고,

소스트리 계정에 선호 프로토콜 SSH 로 등록한 후, 

SSH 주소로 레포지토리를 클론하면 됩니다.

클론 후 Push 를 할때마다 소스트리의 SSH 파일 설정 부분에 가서 계정에 연동된 SSH private 파일을 설정한 후에 Push 를 하면 정상적으로 동작이 됩니다.

 

이상입니다.