윈도우에서 git clone 명령어가 멈추는 문제 때문에 최근 고통을 좀 받았다. 이럴 때는, HTTPS로 먼저 받고, 나중에 SSH로 전환하는 방식이 가장 간편하다.


🔍 문제 상황

  • SSH로 git clone 명령어를 써서 저장소 받아오는 도중에 멈추는 현상 발생
  • Receiving objects: xx% 에서 다운로드가 중단됨

이럴 땐 HTTPS로 클론한 후 SSH로 변경하는 게 빠르고 확실하다. 이 과정에서 알아야 할 몇 가지 중요한 개념과 설정이 있다.


🛠️ 해결 방법

1️⃣ HTTPS로 리포지토리 클론

HTTPS로 먼저 리포지토리를 클론한다. SSH가 막혀있어도 HTTPS는 문제없이 작동한다.

# HTTPS로 리포지토리 클론
cd /d/git/1_project  # 작업할 디렉터리로 이동

git clone https://github.com/example-repo/sample-project.git

이렇게 하면, sample-project 디렉터리에 리포지토리가 클론된다.


2️⃣ 원격 URL을 SSH로 변경

HTTPS로 받은 리포지토리의 원격 URL을 SSH로 변경한다. 이 작업을 통해 다음부터는 SSH 키로 인증하게 된다.

# 원격 URL 확인 (현재는 HTTPS URL로 설정되어 있을 것)
cd sample-project

git remote -v

출력 예시:

origin  https://github.com/example-repo/sample-project.git (fetch)
origin  https://github.com/example-repo/sample-project.git (push)

원격 URL을 SSH로 변경

git remote set-url origin git@github.com:example-repo/sample-project.git

다시 확인해보면, 이제 URL이 SSH로 바뀐 것을 볼 수 있다.

git remote -v

출력 예시:

origin  git@github.com:example-repo/sample-project.git (fetch)
origin  git@github.com:example-repo/sample-project.git (push)

이제 HTTPS에서 SSH로 전환 완료다.


3️⃣ SSH 에이전트에 SSH 키 추가

SSH 키를 에이전트에 추가해야 한다. 그래야 git push, git pull 명령이 SSH 키를 자동으로 사용할 수 있다.

# SSH 에이전트 시작
eval "$(ssh-agent -s)"

# SSH 키 추가
ssh-add ~/.ssh/id_ed25519

SSH 연결 테스트

ssh -T git@github.com

출력 예시:

Hi User! You've successfully authenticated, but GitHub does not provide shell access.

이 메시지가 보이면, SSH 인증이 성공한 것이다.


⚠️ 주의사항

  1. Credential Manager의 HTTPS 자격 증명 삭제
    • Windows의 자격 증명 관리자(Credential Manager)github.com 자격 증명이 저장되어 있다면, 매번 비밀번호 입력 없이 HTTPS로 클론할 수 있다.
    • 이 경우, Credential Manager에 저장된 자격 증명을 삭제해야 한다.
  2. SSH 키가 GitHub에 등록되어 있는지 확인
    • GitHub의 Settings > SSH and GPG keys 페이지에서, id_ed25519.pub(또는 id_rsa.pub 등 키 생성 방식에 따라 선택)의 내용을 복사하여 등록해야 한다.
    • 등록하지 않으면 Permission denied (publickey) 에러가 발생할 수 있다.

📘 명령어 요약

# 1️⃣ HTTPS로 리포지토리 클론
git clone https://github.com/example-repo/sample-project.git

# 2️⃣ 원격 URL을 SSH로 변경
git remote set-url origin git@github.com:example-repo/sample-project.git

# 3️⃣ SSH 에이전트에 SSH 키 추가
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# 4️⃣ SSH 연결 테스트
ssh -T git@github.com

📢 결론

  • HTTPS로 먼저 클론하고, SSH로 전환하는 방식이 가장 간단하고 확실하다.
  • SSH로 클론이 안 될 때는 당황하지 말고, HTTPS로 받아서 SSH로 전환하면 된다.
  • 이 과정이 끝나면, 더 이상 비밀번호를 입력하지 않아도 된다.

이제 git clone, git push, git pull 명령어가 SSH로 자동 인증될 것이다. 🎉

Posted by 공돌이pooh
,