Git Push 시 SSH 비밀번호

Git을 사용하다 보면 git pull은 잘 되는데 git push만 할 때마다 SSH 키의 비밀번호를 반복해서 물어보는 경우가 있습니다. 이 문제의 원인과 해결 방법을 알아보겠습니다.

문제 상황

$ git push
Enter passphrase for key '/root/.ssh/id_ed25519': 
Enter passphrase for key '/root/.ssh/id_ed25519':
Enter passphrase for key '/root/.ssh/id_ed25519':

매번 비밀번호를 입력해야 하고, 심지어 올바른 비밀번호를 입력해도 계속 물어보는 경우가 발생합니다.

원인

SSH 키가 SSH agent에 등록되지 않았기 때문입니다. SSH agent는 한 번 인증한 키를 메모리에 보관하여 재사용하는 역할을 하는데, 키가 agent에 추가되지 않으면 매번 비밀번호를 입력해야 합니다.

해결 방법

1. 즉시 해결 (임시)

SSH agent를 시작하고 키를 추가합니다:

# SSH agent 시작
eval "$(ssh-agent -s)"

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

비밀번호를 한 번만 입력하면, 이후 현재 세션에서는 비밀번호를 묻지 않습니다.

확인:

# 등록된 키 확인
ssh-add -l

# 테스트
git push

2. 영구적 해결 – SSH Config 설정 (권장)

서버를 재시작해도 자동으로 적용되도록 SSH 설정 파일을 수정합니다.

# SSH config 파일 생성/편집
nano ~/.ssh/config

다음 내용을 추가:

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519
    AddKeysToAgent yes

Host gitlab.com
    HostName gitlab.com
    User git
    IdentityFile ~/.ssh/id_ed25519
    AddKeysToAgent yes

파일 권한 설정:

chmod 600 ~/.ssh/config

이제 git 명령 실행 시 자동으로 SSH agent에 키가 추가됩니다.

3. 영구적 해결 – 자동 시작 스크립트

.bashrc 또는 .zshrc에 자동 실행 코드를 추가하는 방법입니다.

nano ~/.bashrc

파일 끝에 다음 내용 추가:

# SSH agent 자동 시작 및 키 추가
if [ -z "$SSH_AUTH_SOCK" ]; then
    eval "$(ssh-agent -s)" > /dev/null
    ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi

저장 후 적용:

source ~/.bashrc

추가 팁

Git Pull은 되는데 Push만 안 되는 경우

먼저 원격 저장소 URL을 확인해보세요:

git remote -v

HTTPS와 SSH가 혼용된 경우:

origin  https://github.com/username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)

SSH로 통일:

git remote set-url origin git@github.com:username/repo.git

GitHub SSH 연결 테스트

SSH 키가 제대로 설정되었는지 확인:

ssh -T git@github.com

성공 시 다음 메시지가 출력됩니다:

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

여러 개의 SSH 키 사용하는 경우

여러 계정을 사용한다면 ~/.ssh/config에서 각각 설정할 수 있습니다:

# 개인 GitHub
Host github.com-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
    AddKeysToAgent yes

# 회사 GitHub
Host github.com-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work
    AddKeysToAgent yes

저장소 클론 시:

git clone git@github.com-personal:username/repo.git

문제 해결이 안 될 때

상세한 디버깅 정보를 확인:

GIT_SSH_COMMAND="ssh -vvv" git push

SSH 연결 과정에서 발생하는 모든 로그를 볼 수 있어 문제를 정확히 파악할 수 있습니다.

마무리

SSH 키 비밀번호를 매번 입력하는 문제는 SSH agent 설정으로 간단히 해결할 수 있습니다. SSH config 파일을 설정하는 방법이 가장 깔끔하고 영구적인 해결책이므로 추천드립니다.

보안을 위해서는 SSH 키에 비밀번호를 설정하되, SSH agent를 활용해 편의성도 함께 챙기는 것이 좋습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다