개요
- 회사 컴퓨터로 회사 계정으로 회사 일을 하고 퇴근 후에는 개인 계정으로 개인 레포에서 작업을 이어 나가고 싶다.
- 그런데, push, pull을 할 때마다 권한이 없다는 오류가 발생한다.
- 회사계정으로 클론받은 레포에서 작업하고 push, pull할 때는 회사계정으로 적용되고 개인 계정으로 클론 받은 레포에서 작업하고 push, pull할 때는 개인 계정으로 적용되도록 구현해보자.
방법
1. .ssh 폴더에 ssh 인증키 생성
ssh-keygen -t rsa -C "첫번째계정Email@example.com" -f "첫번째계정ID"
- userId는 깃헙 id가 아니어도 상관없고 본인이 알아볼 수 있는 것으로 설정한다.
- 저장경로, 비밀번호는 option이므로 그냥 Enter 키 눌러도 된다.
- 첫번째계정ID 파일과 첫번째계정ID.pub 파일이 생성되었을 것이다.
- .pub이 붙은 파일이 공개키이다. 기본 파일이 개인키이다.
- 같은 방법으로 두번째계정도 생성해준다.
2. ssh-agent에 ssh를 등록한다.
- ssh를 사용하여 로그인 및 원격서버(github)에 연결할 때마다 매번 암호를 입력하는 것은 불편하므로 에이전트를 사용하여 한번 암호를 입력하면 해당 암호를 다시 입력하지 않아도 된다.
eval "$(ssh-agent -s)"
- 위 명령어는 ssh-agent를 환경변수로 설정하며 ssh를 추가할 수 있도록 해주는 명령어이다.
- Agent pid 숫자 가 나타나면 성공
3. 생성한 ssh 키를 등록한다.
ssh-add ~/.ssh/'첫번째계정개인키'
ssh-add ~/.ssh/'두번째계정개인키'
4. github에 ssh를 사용할 수 있도록 ssh key 추가
- 개인 계정 github > ‘Settings’ > ‘SSH and GPG keys’ > New SSH key

- rsa 알고리즘으로 생성했기 때문에 ‘Authentication’ 를 선택해준다.
- key에다가 개인 계정 공개키 붙여넣기 (아래 명령어를 통해 공개키를 확인할 수 있다.)
cat ~/.ssh/첫번째계정.pub
- 마찬가지로 두번째 계정도 설정해준다.
5. 각 SSH key를 간편하게 관리하기 위해서 ssh config 파일 생성
- config 파일은 반드시 .ssh 폴더안에서 생성해야한다.
'위치는 ~/.ssh'
vi config
- 위 명령어로 config 파일을 생성하고 아래와 같이 입력한다.
# 첫번째계정 주석
Host github.com-첫번째계정구분
HostName github.com
User git
IdentityFile ~/.ssh/첫번째계정개인키
# 두번째계정 주석
Host github.com-두번째계정구분
HostName github.com
User git
IdentityFile ~/.ssh/두번째계정개인키
- Host는 나중에 clone하거나 remote 등록할 때 사용하므로 기억하기 편한 이름으로 설정한다.
6. SSH 키 연결이 잘되었는지 확인
ssh -T git@github.com-첫번째계정구분

7. SSH 방식으로 clone을 받는다

- ❗️여기서 중요한 것은 git@github.com 부분을 git@github.com-loco9939로 바꿔줘야한다.
- 왜냐하면, config 파일에서 첫번째계정을 github-loco9939로 등록해줬기 때문이다.
이말인 즉, 한번 개인키 파일명을 설정하여 clone을 받고 나서 개인키 파일명을 바꾸면 다시 clone을 받아야 한다는 뜻이다.
추가 팁
만약 commit 시, 로컬과 전역의 git 사용자 정보 변경하고 싶으면 아래 명령어를 사용한다.
로컬 git 사용자 정보를 변경하고싶을때
git config user.name "변경할이름"
git config user.email "변경할이메일"
전역 git 사용자 정보를 변경하고 싶을때
git config --global user.name "변경할이름"
git config --global user.email "변경할이메일"
참조
'git' 카테고리의 다른 글
[git] 특정 커밋 되돌리기 (git revert ~) (0) | 2024.06.14 |
---|