Development/Git

[study]회사 계정으로 개인 계정 깃허브 레포지토리에 접근하는 방법

mefd 2025. 11. 21. 15:31
728x90
반응형

회사에서 사용하는 계정과 개인 계정을 로그인/로그아웃 하며 작업하는 게 아주 귀찮은 일이다.

...실수로 계정 로그아웃을 못해서 개인 계정으로 회사 레포에 커밋한 일도 있다... ㅠ

 

순수하게 clone repo까지 하고, 수정하였지만 push를 하려면 권한이 없다고 에러가 난다.

당연하다. 컴퓨터는 둘 다 내 계정인지 모른다.

 

해결방법 : SSH 키를 사용한다.

이 방법은 회사계정의 HTTPS 인증 대신 개인 계정의 SSH 키를 사용하도록 Git 환경을  설정하는 것이다.

 

1단계 : 개인 SSH 키 생성 및 등록

<터미널 입력>

 

mkdir -p ~/.ssh

-> SSH 설정 폴더를 만듭니다.

 

ssh-keygen -t ed25519 -C "개인 깃허브 메일" -f ~/.ssh/id_ed25519_bangmim

->개인 키 파일(id_ed25519_bangmim)을 생성합니다

볼드체로 처리한 부분(개인 키 파일명)은 개인마다 수정할 수 있는 부분입니다.

ed25519는 암호학에서 권장하는 알고리즘 중 하나로 ssh키의 타입을 지정한 것입니다.

 

cat ~/.ssh/id_ed25519_bangmim.pub

-> 나오는 값(ssh-ed25519 ~ .com까지)을 깃허브 세팅 페이지 > SSH and GPG keys에 등록합니다

id_ed25519_bangmim 아까 위에서 지정한 개인키 이름입니다.

 

 

2단계: SSH Config 파일 설정 (별칭 정의)

config 파일을 만듭니다.

지피티는 nano를 사용하라고 알려줬는데 저의 경우 계속 저장이 되지 않아 두 번째 방법을 사용했습니다.

<nano방법>

nano ~/.ssh/config

입력하면 나오는 창에 아래의 값을 적절하게 수정하여 저장합니다. (들여 쓰기, 띄어쓰기 필수!)

 

Host github.com-bangmim > ~/.ssh/config
    HostName github.com >> ~/.ssh/config
    User git" >> ~/.ssh/config
    IdentityFile ~/.ssh/id_ed25519_bangmim >> ~/.ssh/config

 

cat ~/.ssh/config 를 입력하여 작성한 내용이 그대로 나오는지 확인합니다.
(저는 여기서 자꾸 No such file or directory 이렇게 떠서 아래 방법으로 사용했습니다.)

 

 echo "Host github.com-bangmim" > ~/.ssh/config
echo "    HostName github.com" >> ~/.ssh/config
echo "    User git" >> ~/.ssh/config
echo "    IdentityFile ~/.ssh/id_ed25519_bangmim" >> ~/.ssh/config

 

볼드체로 되어있는 부분을 본인이 설정한 값으로 변경하면 됩니다.

첫 번째 echo는 Host의 별칭입니다. 본인 계정 이름으로 변경하면 됩니다.

(예: Host github.com-johnsmith)

마지막 echo 자신이 앞서 설정한 개인키 파일 이름으로 일치시킵니다.

(예: ssh 생성 당시

ssh-keygen -t ed25519 -C "johnsmith@test.com" -f ~/.ssh/id_ed25519_johnsmith

라면 -> IdentityFile ~/.ssh/id_ed25519_johnsmith

 

ssh-keygen -t ed25519 -C "johnsmith@test.com" -f ~/.ssh/myKey

라면 -> IdentityFile ~/.ssh/myKey

)

cat ~/.ssh/config 를 입력하여 작성한 내용이 그대로 나오는지 확인합니다.

 

3단계: 로컬 레포지토리 원격 주소 변경

HTTPS 주소로 남아있던 원격 주소(origin)를 SSH 별칭을 사용하도록 변경합니다.

푸시하려는 폴더로 이동하여 git init이 되어있지 않다면 git init
git add .
git commit -m "커밋 메시지 작성"
git remote -v

 

기존 주소가 있다면 삭제합니다.
git remote remove origin
git remote add origin git@github.com-bangmim:bangmim/연결하려는 레포지토리 주소.git
별칭을 사용하도록 SSH 주소로 다시 연결합니다.
github.com-bangmim : config에 적었던 Host 별칭 입니다.

bangmim: 본인의 깃허브 사용자 ID로 수정

(예 : git remote add origin git@github.com-johnsmith:johnsmith/My-SNS-Project.git)

 

4단계: SSH Agent에 키 로드 및 푸시

시스템이 개인 키를 사용하도록 Agent에 로드하고 최종 푸시를 실행합니다.

eval "$(ssh-agent -s)"
 > SSH Agent를 시작합니다
입력시 Agent pid 숫자 형태로 나옵니다.
 
ssh-add ~/.ssh/id_ed25519_bangmim

> 개인 키를 Agent에 등록합니다. 

id_ed25519_bangmim 는 앞서 만든 개인 키 이름입니다.

 

git push -u origin main


git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.


Please make sure you have the correct access rights
and the repository exists.

 

+++++ 작업하며 느낀 점! 

분명 잘 설정했는데 자꾸 이런 메시지가 뜨는 이유! 

가장 흔한 문제는 Mac 환경에서 터미널 세션이 바뀌거나 재시작될 때 SSH Agent가 키를 잃어버리는 것입니다.

1. Agent 재시작 및 키 삭제: 기존에 로드된 키를 모두 제거하고 Agent를 재시작합니다.

killall ssh-agent
eval "$(ssh-agent -s)"

2. 키 재추가: 개인 키를 Agent에 다시 로드합니다.

ssh-add ~/.ssh/id_ed25519_bangmim

++++++

그래도 안되면 아래 내용을 확인해 주세요 :)


이 메시지는 SSH Agent에 키를 로드하는 과정에서 암호(Passphrase)가 잘못 입력되었거나, 키 로드에 실패했음을 의미합니다.

Permission denied (publickey) 오류는 깃허브 서버가 당신이 제공한 SSH 키를 알지 못한다는 뜻이며, 이는 보통 SSH Agent가 개인 키를 제대로 서버에 제시하지 못했기 때문에 발생합니다.

GitHub 웹사이트 키 등록 상태 확인 > 

 

  • 설정 확인: SettingsSSH and GPG keys로 이동합니다.
  • 키 활성화 확인: 등록된 키 (id_ed25519_bangmim에 해당하는 키) 옆에 초록색 아이콘이 켜져 있고 Last used 시각이 최근인지 확인합니다.

 

 

원격주소에 오타가 없는지 확인 후 키 삭제 후 다시 시도해 보세요!

✅ 해결 방법: Agent에서 키 삭제 후 재추가

1. Agent에서 모든 키 삭제

ssh-add -D

2. 개인 키를 Agent에 다시 추가 > 4단계 시작

ssh-add ~/.ssh/id_ed25519_bangmim
이때 암호를 신중하게 입력하세요!
저는 그냥 간단하게 입력했습니다. 복잡하니까 오히려 더 틀리는 느낌..

<위에서 해결됐다면 축하드립니다. 저는 아래까지 했습니다.>

 

3. 기존 키 파일

cd ~/.ssh

rm id_ed25519_bangmim id_ed25519_bangmim.pub

 

4. config 파일 삭제 (config 파일 있는 경우)

rm config

 

5. 새 키 생성 > 1단계부터 시작

728x90
반응형