개발일을 시작한지 어느덧 7개월차.
하지만 아직도 git 사용은 서투르기만 하다.
입사 후 처음 git ssh key를 생성해보고, 생성한 key를 가지고 private한 회사 프로젝트 repo를 클론해 작업을 시작했었는데 이 과정이 그 당시에 상당히 어렵고 까다로웠었다.
얼마전 새로운 분이 입사 하게 되어 이 부분을 내가 도와주게 되어주면서,
드디어 git ssh key생성과 이를 통한 repo clone까지의 과정이 확실히 이해가 되어 이렇게 정리를 하려고 한다.
요즘 내 아킬레스건이라고 생각하는 git과 터미널 공부를 하면서 자신감이 많이 상승하고 있다.
어렵다고 피하기 보다 부딪쳐서 배우려는 나의 자세에 칭찬을 해주고 싶다.
그 당시에는 아무리 쳐다봐도 이해가 되지 않던 것이
7개월이 지난 지금은 너무 쉽게 이해되는 이 상황이 신기하다.
ssh: Secure Shell의 약자로 두 컴퓨터 간 통신을 할 수 있게 해주는 하나의 protocol이다.
protocol이란 서로다른 통신 장비간 주고 받는 데이터의 양식과 규칙을 말한다.
인터넷 연결만 되어있어도 내 컴퓨터의 terminal을 통해 다른 지역에 있는 컴퓨터 혹은 서버를 관리할 수 있게 해주고, 파일도 공유할 수 있다.
ssh를 이용한 통신은 client(host에 접속하려는 컴퓨터)와 host(remote 접속 대상)의 통신이 암호화 되어있다. 모든 데이터가 암호화 되어 전송되기 때문에 굉장히 안전하다는 점이 SSH 가 갖는 가장 큰 장점이며, 널리 사용 되어지고 있는 이유이다.
ssh key 존재 유무 확인 가능
$ ls -al ~/.ssh
먼저 ~/.ssh 디렉터리로 이동해서 ls를 실행해 id_ed25519와 id_ed25519.pub 혹은 id_rsa와 id_rsa.pub 파일쌍이 있는지 확인해본다. 이 파일이 있다면 이미 키를 생성했던 적이 있는 것.
(하나의 ssh key를 생성하면 private 와 public key가 쌍으로 생성된다.)
ssh key 생성
$ ssh-keygen -t ed25519 -C "your_email@example.com"
ed25519 암호화 방식 권장하나,
레거시 시스템 등으로 인한 ed25519 불가 시 rsa사용
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
// 여기서 Enter 치면 기본값인 id_ed25519 로 저장되며
// 무언가 적으면 그걸로 저장됨 여기선 "TEST"라는 이름으로 저장해보겠다.
// /Users/mac/.ssh/TEST 경로까지 잘 적어준다
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/mac/.ssh/id_ed25519): /Users/mac/.ssh/TEST
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in TEST
Your public key has been saved in TEST.pub
The key fingerprint is:
SHA256:5gfVjWm45ZxgKGuCeA8ohuxs8MFDr8/DRFSNYIX/fB0 whgpwls210@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]-----+
$ ls -al
$ cat id_ed25519 #개인키
$ cat id_ed25519.pub #공개키
#macOs
$ pbcopy < ~/.ssh/id_ed25519.pub
#windows
$ clip < ~/.ssh/id_ed25519.pub

~/.ssh/config 파일 수정(파일이 없다면 생성)
계졍별 ssh 설정
$ vi ~/.ssh/config
# personal github 1
Host TEST
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/TEST
# personal github 2
Host 사용할 이름2
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/id_ed25519
# company github
Host 사용할 이름3
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/id_rsa
# git@github.com -> git@"github host name"
$ ssh -T git@사용할 이름1 # 개인
$ ssh -T git@사용할 이름2 # 개인2
$ ssh -T git@사용할 이름3 # 회사
👑 clone 할 때 github.com 대신 Host 에 지정한 이름("TEST")을 넣어주면 됩니다.
# git clone git@github.com:organization-name/repo.git
$ git clone git@TEST:RootCho/Study.git
내 컴퓨터에 SSH 키를 생성하여 나의 Public Key 를 host 의 인가 목록에 추가해 자동으로 나를 인증하는 방법입니다. 이 방법을 이용하면 해당 Public Key 와 매칭되는 Private Key 가 존재하는 나의 컴퓨터를 사용하는 한 비밀번호 없이 인증이 가능합니다.
참고 사이트
https://www.lainyzine.com/ko/article/creating-ssh-key-for-github/