티스토리 뷰
문제
개발 로컬 환경은 Mac OS 12.6 (M1) 인데, github 계정은 2개인 상황
운영체제 사용자 관리하는 것처럼 계정을 관리하며 각각 다른 레포지토리에 각각 다른 계정을 사용하고 싶다.
좀더 자세하게 말하면 A 계정으로 a 레포지토리에 push 하려고 하는데
기존에 이미 B 계정으로 설정되어 있어 git push origin 자체가 되지 않는 상황이다.
github 계정 2개, 다른 계정의 레포지토리로 작업 내역을 push 하고 싶음
시도해본 것들
우선 git 최초 설정할 때 git config —global 로 등록을 해두었기 때문에, —local 을 사용하면 되지 않을까 싶어서 시도해봤다.
처음에는 user.name 까지 안하고 user.email만 등록해서 추후에 user.name까지 지정하였다.
그럼에도 remote add origin도 작동되지 않아 좀더 찾아보았다.
http를 이용한 password 접근은 몇 년 전부터 사용하지 않는다고 하여 SSH 로 가져오는 방법으로 검색했다.
해결
로컬 SSH 생성
ed25519 알고리즘으로 SSH keygen 생성
$ ssh-keygen -t ed25519 -C "email@example.com"
Enter file >> 생성될 이름
Enter passphrase >> 적용 비밀번호
passphrase 를 입력했더니, 매번 원격 github 레포지토리에 접근할 때 마다 암호를 입력해야 되서 번거로웠다.
어차피 회사나 공적인 자리도 아니기 때문에 빈값으로 두고 Enter를 눌렀다.
# 생성 결과
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/<User>/.ssh/id_ed25519): id_ed25519_1
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in /Users/<User>/.ssh/id_ed25519
Your public key has been saved in /Users/<User>/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:~~~~~~ email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| .oo.ooo |
| .+o=o... |
| =+oo . |
| oEo++ . |
| o+.=+*S+ |
| oo+ = O o |
| o = o X |
| + o . O |
| . . . . |
+----[SHA256]-----+
SSH-agent 실행 및 config 등록
ssh-agent 백그라운드 실행
$ eval "$(ssh-agent -s)"
> Agent pid {number}
config 설정
$ open ~/.ssh/config
각 계정마다 config 편집
# 개인 주계정
Host github.com # 클론이나 리모트할 때 입력 형식
HostName GitHub.com # 진짜 연결되는 호스트이름
User git
IdentityFile ~/.ssh/id_ed25519_1 # 로그인시 사용되는 ssh
# 개인 서브계정
Host github.com-sub
HostName GitHub.com
User git
IdentityFile ~/.ssh/id_ed25519_a
keychain 등록 (버전마다 -K 또는 --apple-use-keychain 등 옵션이 다름)
$ ssh-add --apple-use-keychain ~/.ssh/id_ed25519_1
Identity added: /Users/<User>/.ssh/id_ed25519_1 (email@example.com)
github accout 에 공개키 추가
공개키 복사 (.pub는 공개키)
$ pbcopy < ~/.ssh/id_ed25519.pub
github.com 접속 → 로그인 → Settings
좌측 메뉴 중 [SSH and GPG keys] 클릭 → New SSH Key 또는 Add SSH Key 버튼 클릭
Title : key에 대한 라벨 (ex. 내 노트북 등)
Key : 복사한 Key 값 붙여 넣기
다 입력한 다음 Add SSH key 클릭
ssh 테스트
$ ssh -T git@github.com # 또는 config 의 Host 입력
$ ssh -T git@github.com
# Hi {GithubID_bb}! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@github.com-sub
# Hi {GithubID_aaa}! You've successfully authenticated, but GitHub does not provide shell access.
알게 된 것
Github은 SSH 프로토콜을 활용해 원격 레포지토리와 로컬 환경을 연결한다.
Git 계정 관련
전역 계정 등록
# git config 전역 사용자 등록
git config --global user.name
git config --global user.email
로컬 계정 등록
git config -l # git config 관련 정보 보기
# 로컬 레포지토리 설정
git config --local user.name
git config --local user.email
ssh agent 키 등록
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
참고자료
Generating a new SSH key and adding it to the ssh-agent - GitHub Docs
GitHub 계정에 새 SSH 키 추가 - GitHub Docs
Set up GitHub push with SSH keys.md
'Learn > Git' 카테고리의 다른 글
Git 서브모듈 (Submodule) (0) | 2023.06.02 |
---|---|
[Git] GitLab 에서 Template 설정하기 - Issue, MR Template (0) | 2022.06.03 |
[Git] Warning: you are leaving 1 commit behind, not connected to any of your branches 에러 문구 발생시 해결방안 (0) | 2022.05.28 |