ssh란 secure shell protocol의 약자로 컴퓨터가 다른 컴퓨터와 통신을 안전하게 하기 위해 사용되는 프로토콜이다. Github과 같은 Remote Repository는 SSH를 이용해 Repository를 업데이트해야 안전한다.
public, private ssh key 쌍을 만든 후, private key는 보인 컴퓨터에 등록하고 public key는 Remote Repository인 Github에 등록하는 방법으로 진행된다.
순서는 아래와 같다.
먼저 ssh라는 이름의 숨겨진 폴더로 이동한다.
$ cd ~/.ssh
이동하였다면 아래 명령어를 입력하여 ssh-key를 생성한다.
$ ssh-keygen -t rsa -C [GitHub 이메일 계정]
# example
$ ssh-keygen -t rsa -C "younoah@naver.com"
잠시 기다리면 아래와 같이 파일의 이름을 작성하라고 나온다,
Enter file in which to save the key (/Users/younoah/.ssh/id_rsa):
이때 그냥 Enter를 입력하면 id_rsa로 저장이 되고 그렇지 않으면 내가 입력한 값이 저장된다.
나는 아래와 같이 2개로 이름을 지어서 생성했다.
그러고 나면 아래와 같이 비밀번호를 입력하라고 나오는데 비밀번호를 따록 설정하지 않을것이기에 Enter를 입력하여 넘어간다.
$ Enter passphrase (empty for no passphrase): [엔터]
$ Enter same passphrase again: [엔터]
ls 명령어로 잘 생성이 되었는지 확인한다.
$ ls
> id_rsa_younoah id_rsa_younoah.pub
pub 파일은 공개 ssh 파일이고 일반 파일은 비공기 ssh파일이다.
위 과정을 한번 더 진행하여 다른 계정 용도의 ssh-key를 생성하여 총 2쌍의 ssh-key를 만든다.
이제 생성한 키를 등록해줄 차례이다. 아래 명령어를 이용하여 등록해준다.
$ ssh-add ~/.ssh/id_rsa_younoah
실행하고 나면 아래와 같이 나오면 정상이다.
Identity added: /Users/younoah/.ssh/id_rsa_younoah (younoah@naver.com)
잘등록이 되었는지 확인하고 싶다면 아래 명령어를 입력해보자.
$ ssh-add -l
> 3072 SHA256:~~~ younoah@naver.com (RSA)
ssh-key를 생성했으면 config 파일을 생성하고
$ vi ~/.ssh/config
아래 내용을 입력하자
# GitHub 계정 younoah
# --------------------
Host github.com-younoah
HostName github.com
User younoah
IdentityFile ~/.ssh/id_rsa_younoah
# GitHub 계정 회사계정
# --------------------
Host github.com-회사계정
HostName github.com
User 회사계정 아이디
IdentityFile ~/.ssh/id_rsa_회사계정
깃허브에 접속하여 아래 경로로 이동한다.
프로필 → Settings → SSH and GPG keys
이후 SSH Keys 항목에서 New SSH Key 버튼을 클릭하고 아래 내용을 입력하자.
Title : 본인이 원하는 이름 지정
Key : 생성한 공개 ssh-key 값
key에 들어갈 내용은 아래 명령어를 통해서 공개키의 값을 복사해서 넣어주면 된다.
$ cat id_rsa_younoah.pub
잘 설정이 되었는지 궁금하다면 아래 명령어를 입력해보자
$ ssh -T git@github.com
> Hi younoah! You've successfully authenticated, but GitHub does not provide shell access.
$ git remote add origin git@github.com-younoah:저장소이름.git
$ git clone git@github.com-younoah:저장소이름.git
레포별로 로컬 유저 네임, 이메일 설정해주기
$ git config --local user.name 'younoah'
$ git config --local user.email 'younoah@naver.com'