회사에서 사용하는 계정과 개인 계정을 로그인/로그아웃 하며 작업하는 게 아주 귀찮은 일이다.
...실수로 계정 로그아웃을 못해서 개인 계정으로 회사 레포에 커밋한 일도 있다... ㅠ
순수하게 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 별칭을 사용하도록 변경합니다.
bangmim: 본인의 깃허브 사용자 ID로 수정
(예 : git remote add origin git@github.com-johnsmith:johnsmith/My-SNS-Project.git)
4단계: SSH Agent에 키 로드 및 푸시
시스템이 개인 키를 사용하도록 Agent에 로드하고 최종 푸시를 실행합니다.
> 개인 키를 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 웹사이트 키 등록 상태 확인 >
- 설정 확인: Settings → SSH and GPG keys로 이동합니다.
- 키 활성화 확인: 등록된 키 (id_ed25519_bangmim에 해당하는 키) 옆에 초록색 아이콘이 켜져 있고 Last used 시각이 최근인지 확인합니다.
원격주소에 오타가 없는지 확인 후 키 삭제 후 다시 시도해 보세요!
✅ 해결 방법: Agent에서 키 삭제 후 재추가
1. Agent에서 모든 키 삭제
ssh-add -D
2. 개인 키를 Agent에 다시 추가 > 4단계 시작
저는 그냥 간단하게 입력했습니다. 복잡하니까 오히려 더 틀리는 느낌..
<위에서 해결됐다면 축하드립니다. 저는 아래까지 했습니다.>
3. 기존 키 파일
cd ~/.ssh
rm id_ed25519_bangmim id_ed25519_bangmim.pub
4. config 파일 삭제 (config 파일 있는 경우)
rm config
5. 새 키 생성 > 1단계부터 시작
'Development > Git' 카테고리의 다른 글
| [study]커밋할때나 브랜치명 만들때 사용하는 규칙 (0) | 2025.11.21 |
|---|---|
| [study] git repository-branch 만들고, 원격저장하기 (0) | 2024.01.03 |
| [error] Error with Permissions-Policy header: Origin trial controlled feature not enabled: 'interest-cohort'. 오류 (0) | 2023.02.21 |
| [error] 'git'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. (0) | 2023.02.02 |