Post

SSH Key 이해 및 GitHub 등록 방법

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_rsaPrivate Key (비공개 키) → 인증 시 사용, 절대 공유 금지
id_rsa.pubPublic Key (공개 키) → GitHub에 등록

ED25519를 사용할 경우, 파일명이 id_ed25519id_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에 등록

  1. Public Key 내용 확인:
    1
    
    cat ~/.ssh/id_ed25519.pub
    
  2. 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_rsaPrivate Key를 SSH Agent에 추가
ssh -T git@github.comGitHub SSH 연결 테스트
git remote -vGit 원격 저장소 확인
git remote set-url origin git@github.com:username/repo.gitGit 원격 저장소를 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을 활용하여 연결할 수 있다.

This post is licensed under CC BY 4.0 by the author.