SSH란?
SSH란 Secure SHell protocol의 약자로 컴퓨터가 다른 컴퓨터와 통신을 안전하게 하기 위해 사용되는 프로토콜이다. Github과 같은 Remote Repository는 SSH를 이용해 Repository를 업데이트 해야 안전하다.
Github에 SSH 연결을 설정하는 방법
Github에 SSH 연결을 설정하는 방법은 여느 암호화 로직과 같다. public, private ssh key 쌍을 만든 후, private key는 본인 컴퓨터에 등록하고 public key는 Remote Repository인 Gihub에 등록하는 방법으로 진행된다.
우리는 이 글에서 위의 등록 과정을 다음의 순서로 진행한다.
- SSH Key 만들기
- SSH key를 로컬 ssh-agent에 등록하기
- public SSH Key를 GitHub 계정에 등록하기
SSH Key 만들기
1. 터미널을 열고 다음 명령어를 사용한다. [Github User Email]은 Github의 이메일이다.
$ ssh-keygen -t ed25519 -C [Github User Email]
*ed25519는 SHA-512와 Curve25519를 사용한 EdDSA 서명 체계로 최신 암호화 방식이다.
2. 1의 명령어를 치고 기다리면 다음과 같은 결과가 나온다. 입력창에서 enter를 누르면 /Users/[user name]/.ssh/id_ed25519 폴더에 key 파일이 생성되는 과정이 시작된다.
$ ssh-keygen -t ed25519 -C [Github User Email]
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/[user name]/.ssh/id_ed25519):
3. 위에서 엔터를 치면 다음과 같이 passphrase를 치라는 말이 나온다. 여기에 비밀번호를 치고 엔터를 누른 후 다시 같은 passphrase를 치고 엔터를 누르면 SSH Key가 만들어진다.
Enter file in which to save the key (/Users/[User]/.ssh/id_ed25519):
Created directory '/Users/[User]/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
4. 결과는 다음과 같이 나오며 /Users/[user name]/.ssh/id_ed25519 에 SSH Key 파일이 저장된다. 이때 identification 은 /Users/[user name]/.ssh/id_ed25519에 저장되고 public key는 .pub가 붙은 상태로 저장된다.
Your identification has been saved in /Users/[User]/.ssh/id_ed25519
Your public key has been saved in /Users/[User]/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:[Key] simplistudiodev@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
| |
| |
| |
| |
| |
| |
| |
| |
| |
+----[SHA256]-----+
SSH key를 로컬 ssh-agent에 등록하기
1. 먼저 Agent pid를 알아야 한다. pid를 알기 위해 eval "$(ssh-agent -s)" 명령어를 사용한다. 이 명령어는 ssh-agent -s의 문자열을 리턴한다.
$ eval "$(ssh-agent -s)"
> Agent pid 59566
2. ~/.ssh/ 폴더에 config가 있는지 확인하기 위해 다음 명령어를 사용한다. 만약 결과값이 아래와 같다면 디렉토리에 config 파일이 없는 것이다.
$ open ~/.ssh/config
> The file ~/.ssh/config does not exist
3. 위에서 config 파일이 없다면 다음 명령어를 사용해 ssh의 config 파일을 만들어준다.
$ vim ~/.ssh/config
위에서 연 vim 편집기에 다음의 사항을 입력한 후 저장(:wq)한다. 위에서 만들어진 SSH Key 를 config 파일에 정의하는 것이다.
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
4. 마지막으로 ssh-agent에 위에서 만든 ssh key identity 을 등록해주어야 한다. ssh-add -K ~/.ssh/id_ed25519 명령어로 가능하다.
*명령어를 입력한 후에 명령어가 deprecated 되었다는 WARNING이 뜨는데 명령어는 하위 호환을 지원하기 때문에 무시해도 괜찮다.
이후 passphrase를 입력하면 Identity file이 ssh-agent에 추가된다.
$ ssh-add -K ~/.ssh/id_ed25519
WARNING: The -K and -A flags are deprecated and have been replaced
by the --apple-use-keychain and --apple-load-keychain
flags, respectively. To suppress this warning, set the
environment variable APPLE_SSH_ADD_BEHAVIOR as described in
the ssh-add(1) manual page.
Enter passphrase for /Users/[User]/.ssh/id_ed25519:
Identity added: /Users/[User]/.ssh/id_ed25519 ([email])
public SSH Key를 GitHub 계정에 등록하기
마지막으로 이제 위에서 private identification key를 우리 머신에 등록했으니 다음은 public ssh key를 Github 계정에 등록할 차례이다.
1. SSH public key를 복사한다.
$ pbcopy < ~/.ssh/id_ed25519.pub
*만약 복사가 작동하지 않으면 vim 편집기를 사용해 파일을 열어 직접 드래그 해서 복사한다.
$ vim ~/.ssh/id_ed25519.pub
2. Github에 로그인 한 후 Settings 페이지로 들어간다.
3. SSH and GPG keys 탭으로 들어가 오른쪽 상단의 New SSH key 버튼을 누른다.
4. 위에서 pbcopy을 이용해 복사한 값을 key에 붙여넣기하고 이름을 지정한다. 이후 Add SSH key를 누른다.
5. 자 이제 등록이 완료되었다. 등록이 완료되면 다음과 같이 확인할 수 있다.
이제 terminal에서 remote repo를 조작할 수 있게 되었다!