SSH Key 이해 및 GitHub 등록 방법
SSH Key 개념 및 GitHub 등록 방법 정리
github 접속 관련해서 ssh key를 통해 인증하는 방식에 대해 이 페이지에 정리한다.
1. SSH Key란?
SSH(Secure Shell)는 네트워크를 통해 안전하게 로그인하고 데이터를 전송할 수 있도록 해주는 프로토콜이다. SSH Key는 비대칭 암호화를 이용한 인증 방식으로, 암호 기반 인증을 대체할 수 있다.
SSH Key는 두 개의 키로 구성된다.
- Private Key (비공개 키): 서버에 접속할 때 사용하며, 절대 공유하면 안 됨.
- Public Key (공개 키): 서버(GitHub)에 등록하여 인증에 사용됨.
즉, GitHub에 공개 키를 등록하면 비공개 키를 가진 내 컴퓨터에서만 인증이 가능하다.
2. RSA vs ED25519
SSH Key를 생성할 때 RSA
또는 ED25519
방식을 사용할 수 있다.
RSA (Rivest-Shamir-Adleman)
- 가장 오래된 암호화 방식이며 널리 사용됨.
ssh-keygen -t rsa -b 4096
→ 4096비트 암호화 적용.- 보안성이 높지만 ED25519보다 속도가 느림.
ED25519
- 최신 암호화 방식으로, 속도와 보안성이 뛰어남.
ssh-keygen -t ed25519
→ 기본적으로 256비트 암호화 사용.- 더 짧은 키 길이로 높은 보안성을 제공함.
- 일부 구형 시스템에서는 지원되지 않을 수 있음.
GitHub에서는 RSA(4096) 또는 ED25519를 추천하며, 속도와 보안성을 고려하면 ED25519가 유리하다.
3. SSH Key 파일 구조 (id_rsa
, id_ed25519
등)
SSH Key를 생성하면 ~/.ssh/
디렉터리에 두 개의 파일이 생성된다.
파일 이름 | 설명 |
---|---|
id_rsa | Private Key (비공개 키) → 인증 시 사용, 절대 공유 금지 |
id_rsa.pub | Public Key (공개 키) → GitHub에 등록 |
ED25519를 사용할 경우, 파일명이 id_ed25519
및 id_ed25519.pub
로 생성된다.
4. SSH Key 생성 및 GitHub 등록 방법
1️⃣ SSH Key 생성
1
ssh-keygen -t ed25519 -C "your_email@example.com"
옵션 설명
-t ed25519
: ED25519 방식으로 SSH Key 생성.-C "your_email@example.com"
: 주석(Comment) 추가 (보통 GitHub 이메일 사용).
RSA 방식으로 생성하려면:
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-b 4096
: 4096비트 암호화 적용.
2️⃣ 생성된 SSH Key 확인
1
ls -al ~/.ssh/
예상 출력 결과:
1
2
-rw------- 1 user user 2602 Feb 20 15:00 id_ed25519
-rw-r--r-- 1 user user 575 Feb 20 15:00 id_ed25519.pub
id_ed25519
: Private Key (비공개 키).id_ed25519.pub
: Public Key (공개 키, GitHub에 등록할 키).
3️⃣ Public Key를 GitHub에 등록
- Public Key 내용 확인:
1
cat ~/.ssh/id_ed25519.pub
- GitHub에서 등록:
- GitHub 웹사이트 방문 → SSH Keys 설정
- “New SSH Key” 클릭
Title
: 원하는 이름 입력 (예: “My Ubuntu SSH Key”)Key
: 위에서 확인한 공개 키 내용을 복사하여 붙여넣기- “Add SSH Key” 클릭하여 저장
4️⃣ SSH Agent에 Key 추가
SSH 인증을 원활하게 하기 위해 SSH Agent에 Key를 추가해야 한다.
1
2
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
(RSA 키를 사용한다면 ssh-add ~/.ssh/id_rsa
실행.)
5️⃣ SSH 연결 테스트
1
ssh -T git@github.com
정상적인 경우 출력:
1
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
5. SSH 관련 명령어 정리
명령어 | 설명 |
---|---|
ssh-keygen -t ed25519 -C "email@example.com" | ED25519 SSH Key 생성 |
ssh-keygen -t rsa -b 4096 -C "email@example.com" | RSA(4096bit) SSH Key 생성 |
ls -al ~/.ssh/ | SSH Key 목록 확인 |
cat ~/.ssh/id_rsa.pub | 공개 키 확인 (GitHub에 등록할 키) |
eval "$(ssh-agent -s)" | SSH Agent 실행 |
ssh-add ~/.ssh/id_rsa | Private Key를 SSH Agent에 추가 |
ssh -T git@github.com | GitHub SSH 연결 테스트 |
git remote -v | Git 원격 저장소 확인 |
git remote set-url origin git@github.com:username/repo.git | Git 원격 저장소를 SSH URL로 변경 |
6. SSH 포트 22 차단 문제 해결 (GitHub 연결 불가)
SSH 연결 시 포트 22가 차단될 경우, GitHub의 포트 443을 사용하여 우회할 수 있다.
1️⃣ 포트 443으로 SSH 연결 테스트
1
ssh -T -p 443 git@ssh.github.com
정상적인 경우 출력:
1
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
2️⃣ SSH 설정 파일에 포트 443 적용
1
nano ~/.ssh/config
다음 내용을 추가:
1
2
3
4
Host github.com
HostName ssh.github.com
User git
Port 443
저장 후 종료 (Ctrl + X
, Y
, Enter
).
이제 SSH 연결 시 자동으로 포트 443을 사용하게 된다.
결론
SSH Key는 GitHub과의 보안 연결을 설정하는 중요한 요소이다. RSA 또는 ED25519 방식을 사용하여 키를 생성하고, GitHub에 등록한 후 SSH Agent에 추가하면 원활한 인증이 가능하다. 만약 포트 22가 차단되었다면 포트 443을 활용하여 연결할 수 있다.