Skip to main content

GitHub – SSH 방식 연결 방법


1. SSH란?

  • SSH(Secure Shell)는 암호화된 인증 방식으로 GitHub 등 원격 서버에 안전하게 연결할 수 있게 해준다.
  • Git 작업 시 매번 사용자명/비밀번호 또는 토큰 입력 대신, 공개키 기반 인증으로 로그인 가능하다.
  • HTTPS보다 보안성/편의성이 뛰어나며, 개발자들이 선호하는 방식이다.

2. SSH 키 생성

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa: 키 유형 (보통 rsa)
  • -b 4096: 비트 수 (보안성 높음)
  • -C: 식별용 주석(보통 이메일 사용)

생성 결과:

  • 비공개 키: ~/.ssh/id_rsa
  • 공개 키: ~/.ssh/id_rsa.pub

→ 기존 키가 있다면 -f ~/.ssh/파일명 옵션으로 이름을 바꿔 생성


3. SSH 공개키 GitHub에 등록

  1. 공개키 복사:
cat ~/.ssh/id_rsa.pub
  1. GitHub 접속
    Settings > SSH and GPG Keys > New SSH Key
  2. 제목 입력 후 키 붙여넣기 → 저장

4. SSH 연결 테스트

ssh -T git@github.com
  • 최초 연결 시 yes 입력 필요
  • 성공 메시지:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

5. 원격 저장소 SSH 주소로 연결

  • HTTPS가 아닌 SSH 주소를 사용해야 한다:
git remote add origin git@github.com:username/repository.git
  • 기존 원격 주소 변경:
git remote set-url origin git@github.com:username/repository.git

6. Git 기본 작업 흐름 (SSH 사용 시)

git pull origin main
git add .
git commit -m "커밋 메시지"
git push origin main
  • 최초 git push -u origin main으로 업스트림 설정 권장

7. SSH 키를 여러 개 사용하는 방법

7.1 SSH 키 여러 개 생성

ssh-keygen -t rsa -C "email1@example.com" -f ~/.ssh/id_rsa_personal
ssh-keygen -t rsa -C "email2@example.com" -f ~/.ssh/id_rsa_work

7.2 ~/.ssh/config 설정

Host github.com-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_personal

Host github.com-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_work

7.3 저장소 원격 주소 설정

git remote set-url origin git@github.com-work:username/repo.git
  • github.com-work~/.ssh/config에 정의된 Host 이름과 일치해야 함

7.4 연결 테스트

ssh -T github.com-work

✅ 보안 팁

  • SSH 비공개키는 절대 외부에 공유하지 말 것
  • .ssh/config접근 권한을 600으로 설정
  • 필요 시 ssh-add ~/.ssh/id_rsa_파일명으로 ssh-agent에 등록 가능
  • 키 생성 시 패스프레이즈를 설정하면 보안 강화

8. GitHub에 SSH 키 자동으로 추가하는 스크립트

8.1 필요 조건

  • GitHub 계정의 Personal Access Token (토큰 방식 로그인 필요)
  • curl 명령어 사용 가능 환경

8.2 스크립트 예시

#!/bin/bash

# 설정: 사용자 정보 입력
GITHUB_USERNAME="your-username"
GITHUB_TOKEN="your-personal-access-token"
SSH_KEY_TITLE="My Laptop SSH Key"
SSH_KEY_PATH="$HOME/.ssh/id_rsa.pub"

# 공개키 가져오기
PUB_KEY=$(cat $SSH_KEY_PATH)

# GitHub API로 키 등록
curl -u "$GITHUB_USERNAME:$GITHUB_TOKEN" \
  --data "{\"title\":\"$SSH_KEY_TITLE\",\"key\":\"$PUB_KEY\"}" \
  https://api.github.com/user/keys

8.3 사용 방법

  1. 위 스크립트를 add_ssh_key.sh로 저장
  2. 실행 권한 부여:
chmod +x add_ssh_key.sh
  1. 실행:
./add_ssh_key.sh

✅ 실행되면 GitHub 계정에 SSH 키가 자동 등록됨


9. SSH 키 백업 및 복구 방법

9.1 백업 방법

mkdir -p ~/backup_ssh_keys
cp ~/.ssh/id_rsa* ~/backup_ssh_keys/
  • id_rsa: 비공개 키
  • id_rsa.pub: 공개 키
  • 외장하드, USB, 클라우드 등 보안된 저장소에 보관할 것

9.2 복구 방법

  1. 복사한 키 파일을 다시 ~/.ssh 디렉토리에 복원
cp ~/backup_ssh_keys/id_rsa* ~/.ssh/
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
  1. 퍼미션 문제 방지:
    • id_rsa: 600 (읽기/쓰기)
    • id_rsa.pub: 644 (읽기 가능)

9.3 권한 오류 방지

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

✅ 팁

  • 여러 장비에 동일한 SSH 키를 복사해도 됨
  • 단, GitHub는 키 값이 같으면 한 번만 등록 가능
  • 새로운 장비에서 키 재생성해도 되고, 기존 키 재사용도 가능