[Git] 특정 프로젝트에서 깃허브 계정 다르게 설정하는 법

minsu·2025년 1월 9일

문제

회사에서 진행하고 있는 A 프로젝트는 깃허브 회사 개인 계정에 연결되어있다.
개인 프로젝트를 진행하기 위해 B 프로젝트를 새롭게 만들어 개인 계정에 연결하고 싶었다.
개인 계정에 repo를 만든 뒤 remote 연결을 했는데 push 하니 에러가 발생했다.

user@user-MacBookPro project-name % git push origin main
remote: Permission to b-git-username/repo-name.git denied to a-git-username.
fatal: unable to access 'https://github.com/b-git-username/repo-name.git/': The requested URL returned error: 403

해결 단계

1. 현재 git 저장소에 등록되어 있는 이메일과 계정 이름 확인

$ git config --list
user@user-MacBookPro project-name % git config --list
credential.helper=osxkeychain
user.name=b-git-username
user.email=b-git-username@gmail.com
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=tru

결과에서 global로 설정된 계정 정보
user.name=b-git-username, user.email=b-git-username@gmail.com를 볼 수 있다.

git 저장소에 저장되어 있는 global보다 높은 우선 순위를 가진 것이 바로 local 이다.
즉, 프로젝트를 하나 생성하고 따로 다른 계정으로 관리하고자 한다면 local config 설정을 해주어야 한다.

그렇지 않으면 local 설정이 없기 때문에
프로젝트를 새로 생성한다하더라도 commit, push를 하게 되면 무조건 global의 설정을 따르게 된다.


2. 따로 관리하고자 하는 프로젝트 경로로 진입 후 local 계정을 등록한다.

$ git config --local user.name 'git 계정이름'
$ git config --local user.email 'git 등록 이메일'
credential.helper=osxkeychain
user.name=kristin-min
user.email=kms@kristinkorea.com
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true
user.name=backend-kms
user.email=mindu6424@naver.com

그 후 다시 git config --list 명령어로 확인해보면 위와 같이 맨 아래 부분에

user.name=backend-kms
user.email=mindu6424@naver.com

가 추가된 것을 확인할 수 있다. 이것이 local로 설정한 계정 정보이다.


3. ssh-key 등록

1. .ssh 숨김 폴더로 이동 후 목록 확인

$ cd ~/.ssh
$ ls

2. ssh-key 생성

$ ssh-keygen -t [암호화 방식] -b [생성할 key의 크기] -C '등록할 GitHub 주소'

-t: 암호화 방식을 지정하며 [암호화 방식]은 보통 rsa를 사용한다. 현재까지 안전하게 사용 가능한 방식이다. 하지만 최신 환경에서는 ed25519도 권장되는 방식이다.

-b: 생성할 key의 크기이며, [생성할 key의 크기]는 보통 3072비트 혹은 4096비트로 설정한다. 크기가 클수록 보안은 높지만 성능에 영향을 줄 수 있다. 보통 3072비트로도 충분한 보안을 제공한다.

-C: 등록할 깃허브의 메일 주소를 의미하며, SSH 키에 식별자를 추가하는 것이다.


ex) ssh-keygen -t rsa -b 3072 -C "your_email@example.com"

정상적으로 실행된다면


Generating public/private rsa key pair. 라는 메세지가 나온다.

Enter file in which to save the key (/Users/whkwon/.ssh/id_rsa):에서 그냥 Enter을 치게 되면 id_rsa 라는 기본 이름의 파일로 저장이 되며, 원하는 명칭이 있다면 적으면 된다.

Enter passphrase (empty for no passphrase): 이름을 설정하면 이렇게 비밀번호를 입력한다.

Enter same passphrase again: 한번 더 입력한다.


이제 여기서

Your identification has been saved in /Users/username/.ssh/id_rsa
Your public key has been saved in /Users/username/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:0MjCsjfhsdkjfhsdjkfhsjdkfhdkshfSHz0JgyrU ‘your_email@example.com’
The key's randomart image is:
+---[RSA 4096]----+
|       .+*.O=    |
|         ...M=.  |
|        .. ==+ . |
|       . .... .  |
|      ,,,        |
|   o o + o .     |
|  .........      |
|   o...... .     |
|       ......... |
+----[SHA256]-----+

가 나오게 되면 정상적으로 ssh-key가 생성된 것이다.


3. ssh-key 등록

이제 ssh-key를 등록해야한다. ssh-key는 pub가 붙지 않은 비밀키를 등록한다.

$ ssh-add [생성된 ssh-key의 경로]

명령어를 실행하면

Identity added: /Users/username/.ssh/id_rsa_name (your_email@gmail.com)

라는 쉘이 나오면 된다.


4. vi를 통한 ssh config 파일 작성

/.ssh 경로에 config 파일을 생성한 후 다음 내용을 작성한다.

$ vi ~/.ssh/config
Host github.com-**wantname**
  				# 원하는 이름 지정
  HostName github.com
  IdentityFile ~/.ssh/id_rsa
               # ssh-key 파일 경로
  User github_name
       # GitHub 계정 이름

5. github에 ssh-key 등록 후 설정 최종 확인

Github -> 우측 상단 프로필 -> Settings -> SSH and GPG keys -> New SSH Key 후 생성

pub 키의 내용 확인법

cat ~/.ssh/id_rsa.pub

제대로 되었는지 확인하기 위해

$ ssh -T git@github.com-Host옆에지은ID(필자: wantname)
Hi wantname! You've successfully authenticated, but GitHub does not provide shell access.

야기될 수 있는 문제점 2가지

1. IP 주소 변경으로 인한 의심

SSH 연결 시, “The authenticity of host 'github.com (00.000.00.000)' can't be established.”는 메시지가 나타난 것으로 보인다.
메시지가 뜨면 현재 IP 주소를 신뢰하는 경우 yes를 입력하면 정상적으로 진행된다.

2. 컴퓨터 재시작 후 SSH 키가 사라짐

컴퓨터를 재시작하면 SSH 에이전트에 추가했던 SSH 키 정보가 초기화된다.
이로 인해 git push 또는 git pull 시 문제가 발생한다.
-> SSH 키를 에이전트에 다시 추가해야 한다.

$ ssh-add ~/.ssh/id_rsa_name7777

하지만 매번 반복적인 일을 수행해야 하므로 번거롭다.
그래서 SSH 키를 자동으로 추가하도록 설정하는 것을 추천한다.

SSH 설정 파일(~/.ssh/config)을 열어 아래 내용을 추가한다.

AddKeysToAgent yes

이 설정은 모든 SSH 연결에서 해당 키를 자동으로 사용하도록 한다.

profile
3년차 백엔드 개발자

0개의 댓글