2022년 7월 작성, 2026년 10월 보완. 원래 글은 «Host key verification failed» 오류를 SSH 키를 등록하지 않아서 생기는 문제로 설명했는데, 이는 정확하지 않았다. 이 오류는 GitHub 서버의 신원 확인(known_hosts) 문제다. 키를 등록하지 않아서 생기는 오류는 «Permission denied (publickey)»다. 두 오류의 해결 방법을 나눠서 다시 정리했고, 키 생성 명령도 GitHub가 권장하는 ed25519로 바꿨다.
목차
목차 펼치기
SSH 키를 등록하는 이유
GitHub는 2021년 8월부터 Git 작업에 계정 비밀번호를 쓸 수 없게 했다. 대신 HTTPS + personal access token이나 SSH 키로 인증한다.
SSH 방식은 컴퓨터마다 키 한 쌍(개인키·공개키)을 만들고, 공개키를 GitHub에 등록하는 방식이다. 한 번 등록해 두면 그 컴퓨터에서는 비밀번호나 토큰 없이 clone·pull·push·fetch를 할 수 있다.
SSH 키 등록 방법
1. 키 만들기
ssh-keygen -t ed25519 -C "your_email@example.com"
저장 위치를 물으면 Enter를 눌러 기본값(~/.ssh/id_ed25519)을 쓴다. 키를 보호할 passphrase도 설정하는 것이 좋다. ed25519를 지원하지 않는 오래된 환경이라면 ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 을 쓴다.
주의:
id_ed25519(확장자 없음)는 개인키라서 절대 다른 곳에 올리거나 공유하면 안 된다. GitHub에 등록하는 것은.pub로 끝나는 공개키뿐이다.
2. ssh-agent에 키 추가하기
passphrase를 매번 입력하지 않도록 ssh-agent에 키를 등록한다.
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
3. GitHub에 공개키 등록하기
공개키 내용을 복사한다.
cat ~/.ssh/id_ed25519.pub
GitHub의 Settings → SSH and GPG keys → New SSH key 에서 복사한 내용을 붙여 넣고 저장한다(바로 가기).
4. 연결 테스트
ssh -T git@github.com
처음 접속하면 GitHub 서버를 신뢰할지 묻는다. 화면의 지문(fingerprint)이 GitHub 공식 SSH 지문과 같은지 확인하고 yes 를 입력한다. 아래처럼 나오면 성공이다.
Hi 아이디! You've successfully authenticated, but GitHub does not provide shell access.
5. 저장소 주소를 SSH로 바꾸기
HTTPS 주소로 clone한 저장소는 키를 등록해도 계속 HTTPS로 접속한다. 원격 주소를 SSH 주소로 바꾼다.
git remote set-url origin git@github.com:아이디/저장소.git
자주 만나는 오류 두 가지
Permission denied (publickey)
git@github.com: Permission denied (publickey).
GitHub가 내 키를 모른다는 뜻이다. 키를 만들지 않았거나, 공개키를 GitHub에 등록하지 않았거나, ssh-agent에 키가 추가되지 않은 경우다. 위의 1~3단계를 확인한다.
Host key verification failed
Host key verification failed.
fatal: Could not read from remote repository.
반대로 내 컴퓨터가 GitHub 서버를 신뢰하지 못한다는 뜻이다. 내 키와는 관계가 없다. 처음 접속할 때 서버를 신뢰한다고 답하지 않았거나, ~/.ssh/known_hosts 에 저장된 GitHub 서버 키가 바뀐 경우에 생긴다. 예를 들어 GitHub는 2023년 3월에 RSA 서버 키를 교체했다.
예전 정보를 지우고 다시 접속해서, 지문을 확인한 뒤 yes 를 입력한다.
ssh-keygen -R github.com
ssh -T git@github.com
정리
- GitHub에서 비밀번호 인증이 막힌 뒤로, 터미널에서는 SSH 키나 personal access token으로 인증한다.
- SSH 키는 ed25519로 만들고, 공개키(
.pub)만 GitHub에 등록한다. ssh -T git@github.com으로 연결을 확인하고, 저장소 주소를 SSH 주소로 바꾼다.- «Permission denied (publickey)»는 내 키 문제, «Host key verification failed»는 GitHub 서버 신뢰(known_hosts) 문제다.