티스토리 뷰

평소 GitHub을 사용할 때 아무 생각 없이 HTTPS로 remote를 설정하거나 clone 받아서 사용하고 있었는데, 최근 GitHub에서 보안을 강화하겠다고 password 인증 방식을 없애버렸고, 그 에러를 해결하면서 SSH 인증 방식에 대해 알게 되었다.

이번 포스팅에서는 이 과정에서 알게된 SSH 방식으로 통신하도록 설정하는 방법을 정리하려고 한다.

 


 

로컬 Git을 GitHub과 연결하기 위해서는 어떤 방식으로 원격 저장소와 통신할 것인지를 설정해 주어야 한다. 

그 방식으로는 현재 아래 3가지가 있다.

  1. HTTPS 방식
  2. SSH 방식
  3. GitHub CLI 방식

※ 기존에는 1, 2번 방식만 있었는데 마이크로소프트가 GitHub을 인수하면서 GitHub CLI 방식이 추가 되었다.
GitHub CLI는 GitHub의 기능들(PR, 이슈, Repository 등)을 커맨드 라인으로 쓸 수 있도록 도와주는 CLI 도구이다.

 

 

여기서 통신 방법을 설정할 수 있는 케이스는 아래 3가지 정도로 요약할 수 있다.

 

  1. 처음 프로젝트를 만들어서 원격 저장소에 올리려고 하는 경우

      $ git remote add origin [URL]

 

  2. 원격 저장소에 있는 코드를 로컬로 받아오려는 경우

      $ git clone [URL]

 

  3. 통신 방식을 바꾸려는 경우 (HTTPS → SSH)

      $ git remote set-url origin [URL]

 

 

위에서 [URL] 들어가는 url에 따라 통신 방식이 결정된다.

# HTTPS 방식
> https://github.com/USERNAME/REPOSITORY.git

# SSH 방식
> git@github.com:USERNAME/REPOSITORY.git

 

 

현재 자신의 프로젝트는 어떤 방식으로 통신하는지 확인하기 위해서는 아래 명령어를 실행 해 보자.

$ git remote -v

 

이 결과가 https://github.com/~~~ 이라면 HTTPS 방식으로, git@github.com:~~~ 이라면 SSH 방식으로 통신하고 있는 것이다.

 

이제 본론으로 ...

여기서 SSH(=Secure Shell)는 네트워크 프로토콜로, SSH를 사용해 안전하게 네트워크 통신을 할 수 있다.

 

SSH 프로토콜은 사용자 인증 방식을 필요로 하는데, GitHub에서는 공개 키(Public Key) 인증 방식을 사용한다.

공개 키 인증 방식은 사용자 컴퓨터에 등록 되어 있는 공개 키(Public Key)-개인 키(Private Key) 쌍과 GitHub 서버에 등록 되어 있는 공개 키를 비교해 올바른 사용자인지 인증하는 방식이다.

 

GitHub에 공개 키가 등록 되어있는지 확인하는 가장 간단한 방법은 아무 리포지토리에 들어가서 clone을 클릭해서 SSH 탭을 들어갔을 때 SSH Key가 없는 경우 아래 노란색 박스 경고창이 뜬다.

 

경고창이 없으면 이미 키가 등록 되어 있는 것이다.

※ 만약 키가 있는데 컴퓨터의 키와 다른 경우, 네트워크 통신 시도 시 ssh permission denied (publickey)에러가 뜬다.

이 때는 컴퓨터의 키로 GitHub에 등록된 키를 업데이트 해 주어야 한다.

 

키가 등록되어 있지 않은 경우, 일단 컴퓨터에 이미 SSH 키 쌍이 존재하는지 확인해야 한다.

컴퓨터에 이미 SSH 키 쌍이 존재한다면 그 중 공개 키를 GitHub에 등록하면 되고, 없다면 먼저 키 쌍을 생성해야 한다.

 

컴퓨터에서 SSH 키 존재 여부 확인

일반적으로 사용자 키 파일은 ~/.ssh 경로에 존재한다.

키를 확인하기 위해 터미널에 아래 명령어를 실행해 보자.

$ ls -al ~/.ssh

 

 

키 생성

이렇게 아무것도 없으면 키를 생성해 주어야 한다.

키는 ed25519 방식으로 생성할 수 있고, rsa 방식으로 생성할 수도 있다.

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

# rsa 
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

 

ed25519 방식 키 생성
rsa 방식 키 생성

여기서 .pub로 끝나는 파일이 공개 키 이고 없는 파일이 개인 키이다.

 

키 조회

cat 명령어로 공개 키를 조회해 보자.

# ed25519 
$ cat ~/.ssh/id_ed25519.pub 

# rsa 
$ cat ~/.ssh/id_rsa.pub

 

조회한 값이 ssh-ed25519 또는 ssh-rsa로 시작하면 올바른 공개 키라고 볼 수 있다.

 

발급 받은 키 GitHub에 등록

  1. 프로필을 클릭해서 [Settings]에 들어간다.

 

2. [SSH and GPG keys] 탭에 들어가서 [New SSH key]를 클릭한다.

 

 

3. Key 탭에 위에서 조회한 키를 넣고 추가한다.

 

 

끝!

다시 아무 리포지토리 Clone에 들어가 보면 노란 경고창이 사라진 것으로 GitHub에 공개 키가 등록 되었음을 간접적으로 확인할 수 있다.

이제 SSH URL을 통해 GitHub과 통신할 수 있다! 👏👏👏

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함