GitHub을 사용하기 위해서는 먼저 OpenSSH 키를 등록해야 한다.
Git과 GitHub를 로컬에서 사용하고 제대로 사용해 본적이 없었던 지라, SSH 키를 왜 만들어야 하는지 잘 이해가 되지 않았다.
일단 필자는 HTTP를 사용하여 git을 사용했기 때문에 SSH를 이용한 방식은 처음이다. 둘의 차이는 아래 포스팅을 참고하면 될 것같다.
GitHub를 사용할 때 SSH 키는 왜 필요한가?
로컬 개발환경에서 Git을 단독으로 사용하면 SSH가 없어도 무방했던 것 같다.
하지만 안전하게 외부 Git 서버에 코드를 Clone 하거나 Push하려면 SSH 프로토콜을 사용해야 한다고 한다.
GitHub처럼 인터넷을 통해 원격에서 Git 저장소를 호스팅해주는 서비스에서도 SSH프로토콜을 지원하고 있다. GitHub 뿐만 아니라 원격 Git 저장소와 통신할 때 일반적으로 사용하는 방법이다.
SSH란
Git에서도 사용하지만, 원래는 멀리 떨어져있지만 인터넷이나 네트워크를 통해 연결되어있는 컴퓨터에 안전하게 연결해주는 프로토콜로 안전한 셸(Secure Shell)이라고도 부릅니다.
윈도우(Windows)의 명령 프롬프트나 리눅스의 터미널을 사용해봤다면 셸은 이미 알고 있는 겁니다. 셸을 통해서 명령어를 입력할 수 있는데, 이 명령어를 내 컴퓨터가 아닌 네트워크로 다른 컴퓨터에 전달해주고 결과를 받아볼 수 있게 해주는 게 바로 SSH입니다.
간단히 말해서 SSH란 Secure Shell의 약자로 두 컴퓨터 간 통신을 할 수 있게 해주는 하나의 protocol(서로 다른 통신 장비간 주고 받는 데이터의 양식과 규칙)이다.
즉, 인터넷 연결만 되어 있으면 내 pc의 termial을 통해서 다른 지역에 있는 pc 또는 server를 관리할 수 있게 해주고, 파일도 공유할 수 있다.
안전(Secure)한 통신
SSH는 사용자, 패스워드나 여러가지 인증 방법을 지원합니다만, 그 중에서도 편리성이나 안정성 면에서 추천하는 방식이 공개키 인증 방식입니다.
ssh를 이용한 통신은 client(host에 접속하려는 pc)와 host(remote 접속 대상)의 통신이 암호화 되어있다. 모든 데이터가 암호화 되어 전송되기 때문에 안전하다는 점이 SSH가 가지는 큰 장점이며, 널리 사용되는 이유이다.
공개키 인증방식
공개키 인증 방식을 사용하려면 공개키와 개인키를 한 쌍 만들어야 한다.
공개키는 접속하고자 하는 서버(host)에 등록해놓는 용도로 사용한다. 사용자(client)는 개인키를 통해서 SSH에 접속하고, 연결 요청을 받은 SSH 서버에서는 서버에 등록된 공개키 중에 요청 받은 개인키 정보와 매치가 되는 공개키가 있는지 찾아본다.
없으면 서버 접속(인증)에 실패하게 될 것이고 등록한 공개키가 있다고 한다면 인증에 성공하고 서버에 접속이 된다고 보면 된다.
공개키는 어디에 공개되어도 문제가 없습니다만, 개인키는 비밀번호와 마찬가지로 반드시 나만 접근할 수 있도록 안전하게 보관해야합니다. 절대로 다른 사람에게 노출되어서는 안 됩니다. 개인키가 있으면 내가 공개키를 등록해놓은 SSH 서버나 Git 서버에 접속할 수 있기 때문입니다.
SSH Key 생성 (깃헙 계정 연동 목적)
ssh key 존재 유무 확인
먼저 ~/.ssh 디렉터리로 이동하여 id_ed25519와 id_ed25519.pub 혹은 id_rsa와 id_rsa.pub 파일쌍이 있는지 확인해본다. (하나의 ssh key를 생성하면 private 와 public key가 쌍으로 생성된다.)
무턱대로 키를 추가로 생성하게되면 기존 키가 덮어씌워질 수 있기 때문에 주의해야 한다.
$ cd ~/.ssh
$ ls
...
ssh key 생성
$ ssh-keygen
Enter file in which to save the key (/Users/lainyzine/.ssh/id_ed25519):
첫 번재로 저장하고자 하는 위치를 물어본다. 다른 위치를 지정하는 것도 가능하지만, 기본 값을 사용하겠다.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
다음은 SSH 키에 대한 Password를 추가지정해 주어야한다. Password는 직접 설정해 주어도 되고, 추가로 패스워드 없이 사용하기 위해서는 엔터를 두 번 입력해 준다. 공식적으로는 Password의 설정을 권장하고 있다.
The key fingerprint is:
SHA256:5gfVjWm45ZxgKGuCeA8ohuxs8MFDr8/DRFSNYIX/fB0 -------@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
| o=oo |
| .o . .. o + |
| .. .. . = * . |
|o= o. .o o BE. |
|*oB.o ooS ..+. |
|*o *.o oo.. . |
| +oo. ... |
|. oo . |
| o. |
+----[SHA256]-----+
SSH 키가 생성된 것을 볼 수 있다.
$ ls -la ~/.ssh
Aug 8 12:31 id_rsa #개인키
Aug 8 12:31 id_rsa.pub #공개키
다음은 생성된 개인키와 공개키를 확인해본다. id_rsa, id_rea.pub이 생성된 것을 확인할 수 있다.
$ chmod 600 ~/.ssh/id_rsa*
보안을 600으로 변경해 준면 좋다. 이미 되어 있는경우는 pass!
Github SSH 키 등록
$ cat 파일경로/id_rsa.pub
cat 명령어를 통해 파일의 내용을 출력한다. 그리고 해당 내용을 깃헙 오른쪽 상단 프로필 > Settings > 왼쪽 사이드 메뉴 SSH and GPG keys - New SSH key에 복사한 공개키를 등록한다.