[Github] SSH 통신 방법 - 키 생성 및 등록

Github SSH 통신하기

GitHub에서 Remote와 Local 간의 통신을 설정할 때 HTTPS와 SSH 두 가지 방법이 제공된다. 이 중에서 SSH를 사용하는 이유는 보안성과 편의성에 있다. SSH(Secure Shell)는 네트워크를 통한 안전한 데이터 전송을 위해 암호화된 통신 프로토콜을 제공한다. GitHub와 같은 원격 저장소와 로컬 환경 간의 통신에서 SSH를 사용하면 암호화된 채널을 통해 데이터를 주고받기 때문에 데이터의 기밀성이 유지된다. SSH 키 페어(key pair)를 이용해 인증을 수행하고 비밀번호를 매번 입력할 필요 없이 자동으로 인증이 이루어져 작업의 효율성을 향상시킨다. 

 

HTTPS와 SSH의 차이점

  1. 인증 방식
    • HTTPS: 매번 원격 저장소에 접근할 때마다 사용자 이름과 비밀번호를 입력해야 한다. 최근에는 GitHub에서 토큰 기반 인증이 권장되고 있지만 여전히 인증 과정이 번거로울 수 있습니다.
    • SSH: SSH 키 페어(공개 키와 개인 키)를 이용한 비밀번호 없는 인증을 제공한다. 한 번 설정하면 이후에는 자동으로 인증이 이루어져 더 편리하다
  2. 보안
    • HTTPS: SSL/TLS를 이용해 통신을 암호화하지만 비밀번호 기반의 인증으로 인해 비밀번호가 유출될 위험이 존재한다.
    • SSH: 공개 키 암호 방식을 사용하여 통신을 암호화하고 인증하여 비밀번호 없이도 안전하게 통신할 수 있다. 개인 키가 유출되지 않는 한 안전하다.
  3. 편의성
    • HTTPS: 설정이 간단하고 대부분의 네트워크 환경에서 사용할 수 있다. 하지만 비밀번호를 자주 입력해야 하거나 토큰을 갱신해야 하는 불편함이 존재한다.
    • SSH: 초기 설정이 약간 복잡할 수 있지만 한 번 설정하면 비밀번호를 입력할 필요가 없기 때문에 더 편리하다. 

SSH 공개키와 비공개키 만들기

SSH를 통해 Github와 통신하기 위해서는 먼저 SSH 키를 생성해야 한다. Github에서 제공하는 문서를 보고 간단하게 키를 생성할 수 있다.

상세내용은 아래 Github 링크를 참고

 

Generating a new SSH key and adding it to the ssh-agent - GitHub Docs

After you've checked for existing SSH keys, you can generate a new SSH key to use for authentication, then add it to the ssh-agent.

docs.github.com

 

SSH 키 생성하기

아래 코드를 터미널에 입력하면 키 생성이 완료된다.

예시로 되어 있는 이메일은 깃허브에 등록되어 있는 본인의 이메일 주소로 변경하면 된다.

ssh-keygen -t ed25519 -C "your_email@example.com"

 

정상적으로 입력이 완료되었다면 아래 문구가 나온다.

Generating public/private ALGORITHM key pair.

 

그 이후에 사용자에게 키 저장위치와 SSH에 대한 추가 패스워드를 지정할 것인지 물어본다.

# 저장위치를 변경한다면 저장위치 입력 후 엔터 (입력하지 않고 엔터를 치면 기본 경로로 설정)
> Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]

# 추가 패스워드를 입력 후 엔터 (지정하지 않아도 문제는 없지만 깃허브는 지정하는 것을 권장)
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

 

여기까지 완료가 되었다면 키 생성이 완료된 것이다. 정상적으로 완료되었는지 확인하기 위해 아래 명령어를 통해 "id_ed25519"와 "id_ed25519.pub"가 있는지 확인해보자.  

ls -la ~/.ssh

비공개키 : id_ed25519

공개키 : id_ed25519

 

SSH 공개키 등록하기

이제 Github에 생성한 공개키를 등록해야 한다. 등록에 관한 상세 내용은 아래 문서를 참고하면 더 자세한 내용을 알 수 있다.

 

Adding a new SSH key to your GitHub account - GitHub Docs

To configure your account on GitHub.com to use your new (or existing) SSH key, you'll also need to add the key to your account.

docs.github.com

 

Github에 등록하기

SSH 공개키를 등록하기 위해서 먼저 SSH 공개키를 copy한다. 아래 명령어를 사용하면 손쉽게 copy 가능하다.

# mac
pbcopy < ~/.ssh/id_ed25519.pub

# windows
clip < ~/.ssh/id_ed25519.pub

 

이제 Github에 접속 후 로그인을 진행하여 Settings 메뉴로 들어온다.

 

 

SSH and GPG keys 메뉴를 클릭해 아래 페이지로 이동한다.

 

New SSH key 버튼을 누르고 아래 페이지에서 키 제목을 적은 후 처음에 복사한 공개 키를 key 필드에 넣어준다.

여기까지 완료되었다면 SSH 키 생성과 Github 등록이 완료된 것이다.