본문 바로가기
Study (etc)/git

[git / GitHub] GitHub에서 ssh 키 생성 및 인증하기

by Haren 2022. 3. 20.

ssh 인증이 필요해졌다...

얼마 전에 아이패드 프로 11인치 3세대 모델을 구매하였고, 이 아이패드를 갖고다니면서 간단하게 알고리즘 문제를 풀거나 웹 개발을 위해 친구가 자신의 NAS에 구축해준 ssh 서버에 code-server 개발환경을 부탁했다. 이후 테스트로 내 git 리포지토리에 commit과 push를 하려 했으나, 기존의 https 인증방식이 아닌 ssh 인증 방식을 요구했기에, ssh 키가 필요해졌다.

 

ssh 인증의 간단한 원리

ssh의 키 중 비대칭 키라고 부르는 키는, 공개키와 비밀키로 나뉘며 클라이언트와 서버는 각각의 키를 가지고 상대를 인증하고 데이터를 주고 받게 된다. 오늘 포스팅에서 다룰 키를 생성하고 나면 github에 '공개키'를 주어 인증을 하게 된다.

 

내 작업 환경

ssh 서버 : Ubuntu 20.04.1 LTS

로컬 : MacBook Pro 2018 15” , macOS monterey 12.3

 

ssh 키 생성하기

ssh 서버 접속

ssh 서버에 접속하기

 

$ (Username)@(server ip or url) -p (port)

기본 22 포트가 아닌 경우 -p 옵션으로 포트 번호를 설정할 수 있다.

 

ssh 폴더로 이동

cd ~
cd .ssh

ssh-keygen 으로 ssh 키 생성

$ ssh-keygen -t rsa -b 4096 -C "user@email.com"

나는 키를 만드는 알고리즘 (-t)을 rsa로, 비트 크기(-b)를 4096으로 지정해주어서 만들었다.

"user@email.com" 부분에는 사용자의 이메일 주소를 입력해주면 된다.

Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

명령어를 입력하면 이렇게 키를 저장할 경로를 물어보는데, 경로를 따로 지정해야 할 필요가 없는 경우 그냥 엔터 키로 넘어가자.

처음 키를 생성하면서 이 부분에 쓸데없이 경로를 달아버리는 바람에 인증에 애를 먹었던 기억이 있다.

Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):

경로를 지정해주고 나면 키의 비밀번호를 두 번 입력받는다.

$ ssh-keygen -t rsa -b 4096 -C "user@email.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qYWyFlIUh/DxwRyzRj961ymIFyhgKchwpAyl0YJcIIm my-email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| Eo+X+.          |
|+O.B.O           |
|+.  @ =          |
|o. B *   o .     |
|. . B = S o      |
|   . = + .       |
|    o =          |
|   .         =   |
|                 |
+----[SHA256]-----+

진행하면 위와 같이 자신의 공개키와 비밀키 한 쌍이 생성된다.

 

생성된 ssh 키 확인하기

ssh 폴더 내에서 ls -al 명령어를 통해 id_rsa, id_rsa.pub 이름의 키 한 쌍이 생성된 것을 확인 할 수 있다. 

id_rsa는 비밀키, id_rsa.pub는 공개키이다. 우리는 이 공개키를 github에 넣어주면 된다.

 

cat 명령어로 ssh 키의 값 확인하기

cat 명령어를 통해 id_rsa.pub 공개키를 실행시켜주면 ssh 키의 값을 알 수 있다. 이 부분을 이메일로 끝나는 부분까지 복사해서 잘 저장해두자.

 

github에 ssh키 등록하기

프로필 - Settings - SSH and GPG Keys

New SSH key

Title 란에 키의 이름을 입력하고, Key 란에는 아까 복사해서 저장해둔 자신의 공개키 값을 붙여넣은 후 등록한다.

 


이렇게 등록까지 마쳤다면 리포지터리를 클론하거나 리모트 할 때에 기존 https 링크가 아닌 ssh 로 해주면 된다. 

여기까지 해서 나는 code-server에서도 로컬과 마찬가지로 버전관리를 할 수 있게 되었다.

 

레퍼런스

https://jootc.com/p/201905122827