[Git/GitHub] SSH 키 생성부터 GitHub 연결까지, 5분 완성 가이드 (feat. Permission denied 해결법) 🔑

 GitHub 저장소를 HTTPS로 사용하다 보면 push할 때마다 아이디와 토큰(Personal Access Token)을 입력해야 해서 번거로운 순간이 있습니다. 오늘은 SSH 키를 등록해서 비밀번호 없이 바로 접속하는 방법을 정리해보겠습니다.


🤔 SSH는 왜 편할까?


HTTPS 방식은 매번 인증 정보를 확인하지만, SSH 방식은 미리 등록해둔 키 쌍(개인키/공개키)으로 자동 인증을 합니다. 한 번만 설정해두면 이후로는 git push, git pull 할 때 별도 로그인 절차 없이 바로 사용할 수 있습니다.


🔑 1단계: 기존 키 확인


먼저 이미 만들어둔 SSH 키가 있는지 확인합니다.


ls -al ~/.ssh


id_ed25519, id_rsa 같은 파일이 보이면 기존 키를 재사용해도 되고, 디렉터리가 아예 없다면(No such file or directory) 새로 만들면 됩니다.


🚀 2단계: SSH 키 생성


# 1. ed25519 방식으로 키 생성 (최신 방식, RSA보다 안전하고 빠름)

# 2. -C 옵션은 키를 구분하기 위한 주석(보통 이메일)

# 3. -f 옵션으로 파일명을 원하는 이름으로 지정 가능

ssh-keygen -t ed25519 -C "example@email.com" -f ~/.ssh/id_ed25519_github


실행하면 패스프레이즈(암호)를 입력하라고 나오는데, 보안을 위해 설정하는 것을 권장합니다. 완료되면 ~/.ssh 안에 개인키(id_ed25519_github)와 공개키(id_ed25519_github.pub) 두 개의 파일이 생성됩니다.


▎ ⚠️ 개인키 파일은 절대 외부에 공유하거나 블로그·깃허브 등에 업로드하면 안 됩니다. GitHub에 등록하는 건 반드시 .pub로 끝나는 공개키입니다.


📋 3단계: GitHub에 공개키 등록


pbcopy < ~/.ssh/id_ed25519_github.pub


위 명령으로 공개키 내용을 클립보드에 복사한 뒤, GitHub 우측 상단 프로필 → Settings → SSH and GPG keys → New SSH key로 들어가서 붙여넣고 저장합니다.


✅ 4단계: 연결 테스트


ssh -T git@github.com


여기서 저처럼 두 가지 에러를 만날 수 있습니다.


① Host key verification failed


~/.ssh가 새로 생성된 상태라 GitHub의 호스트 키가 known_hosts에 등록되어 있지 않을 때 발생합니다. 터미널에서 직접 실행하면 아래처럼 확인 문구가 뜨는데, yes를 입력하면 해결됩니다.


The authenticity of host 'github.com' can't be established.

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes


② Permission denied (publickey)


known_hosts 문제를 해결했는데도 이 에러가 난다면 두 가지를 의심해보세요.


- GitHub 계정에 공개키가 실제로 등록되었는지 (3단계를 빠뜨리지 않았는지)

- 키 파일명을 기본값(id_ed25519)이 아닌 다른 이름으로 저장했는지 → 이 경우 SSH가 해당 키를 자동으로 찾지 못합니다.


⚙️ 5단계: config 파일로 키 지정하기


기본 파일명이 아닌 이름으로 키를 만들었다면, ~/.ssh/config 파일에 아래처럼 등록해서 어떤 키를 쓸지 명시해줘야 합니다.


# ~/.ssh/config

Host github.com

  HostName github.com

  User git

  IdentityFile ~/.ssh/id_ed25519_github


이렇게 설정한 뒤 다시 ssh -T git@github.com을 실행하면 아래처럼 성공 메시지를 확인할 수 있습니다.


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


---

이제 저장소를 SSH 주소로 clone하거나(git clone git@github.com:사용자명/저장소명.git), 기존 저장소는 git remote set-url origin git@github.com:사용자명/저장소명.git으로 바꿔서 편하게 사용하시면 됩니다. 다음엔 GPG 서명 커밋 설정도 한번 다뤄볼까 합니다 🙂

댓글