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에 등록
- 공개키 복사:
cat ~/.ssh/id_rsa.pub
- GitHub 접속
Settings > SSH and GPG Keys > New SSH Key
- 제목 입력 후 키 붙여넣기 → 저장
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 사용 방법
- 위 스크립트를
add_ssh_key.sh
로 저장 - 실행 권한 부여:
chmod +x add_ssh_key.sh
- 실행:
./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 복구 방법
- 복사한 키 파일을 다시
~/.ssh
디렉토리에 복원
cp ~/backup_ssh_keys/id_rsa* ~/.ssh/
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
- 퍼미션 문제 방지:
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는 키 값이 같으면 한 번만 등록 가능
- 새로운 장비에서 키 재생성해도 되고, 기존 키 재사용도 가능