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를 활용해 편의성도 함께 챙기는 것이 좋습니다.
답글 남기기