GitHub SSH 연결하는 방법에 대한 포스팅 입니다.
비대칭키 방식은 암호화 시 사용하는 키와 복호화 시 사용하는 키가 다른 경우로, 타인에게 절대 노출되어서는 안되는 개인키(private key), 비밀키를 토대로 만든 공개키(public key)가 쌍을 이룬 형태입니다.
공개키로 정보를 암호화하며, 개인키를 가진 사용자만 복호화를 진행할 수 있습니다.
GitHub에 연결할 호스트에 SSH 키를 생성합니다.
(예시에서는 ed25519 알고리즘을 사용합니다.)
$ ssh-keygen -t ed25519 -C "your_email@example.com"
위 명령어를 실행 시, 키를 저장할 디렉터리 위치 + 파일명 입력을 진행해야 합니다. 만약 디폴트로 설정하고 싶은 경우, 별도 입력 없이 Enter 키를 입력하면 됩니다.
그리고 비밀번호(passphrase)를 입력하면 개인키와 공개키가 생성됩니다.
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519): # 키를 저장할 위치 입력
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519. # 개인키 파일
Your public key has been saved in ~/.ssh/id_ed25519.pub. # 공개키 파일
The key fingerprint is:
SHA256:해시코드값 your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| 생략 |
+----[SHA256]-----+
여기서 입력한 비밀번호(passphrase)는 추후 개인키를 사용하여 복호화 시 사용됩니다.
SSH 키 생성할 시, 디폴트 파일명으로 설정하였다면, ssh-agent에 자동으로 등록되기 때문에 아래 과정을 진행할 필요가 없습니다.
SSH 키 생성 시 비밀번호를 입력하면, 키를 이용해 원격 서버에 접속할 때마다 비밀번호를 물어보는데, ssh-add
명령어를 사용하면 ssh-agent에서 개인키를 caching하기 때문에 처음 한 번만 개인키 비밀번호를 입력하면, 다음부터는 사용자가 또 비밀번호를 입력하지 않아도 됩니다.
$ eval "$(ssh-agent -s)" # ssh-agent 백그라운드 실행
$ ssh-add <ssh 개인키 경로>
~/.ssh/known_hosts 파일에는 신뢰할 수 있는 서버인지 검증하기 위해 이전에 접속한 서버(호스트)의 공개키가 기록됩니다.
$ ssh -T git@github.com
The authenticity of host 'github.com (IP주소)' can't be established.
ECDSA key fingerprint is SHA256:해시코드.
ECDSA key fingerprint is ~.
Are you sure you want to continue connecting (yes/no)? yes
아래 명령어로 known_hosts 파일에 github 서버의 공개키가 정상 기록되었는지 확인할 수 있습니다.
$ cat ~/.ssh/known_hosts
github.com,IP주소 ecdsa-sha2-nistp256 해시코드값
1번 과정에서 생성한 SSH 개인키 & 비밀번호를 등록합니다.
SSH 개인키는 아래 명령어 실행 후 출력 값을 복사붙여넣기 합니다.
$ cat ~/.ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
해시코드값
-----END OPENSSH PRIVATE KEY-----
비밀번호는 SSH 키 생성 당시 입력한 passphrase 값을 입력하면 됩니다.
1번 과정에서 생성한 SSH 공개키를 등록합니다.
SSH 공개키는 아래 명령어 실행 후 출력 값을 복사붙여넣기 합니다.
$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 해시코드 your_email@example.com