티스토리 뷰

문제

개발 로컬 환경은 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

 

댓글