🥕 사용 이유
깃허브는 2021년 8월 13일부터 로컬에서 수행되는 깃 작업에 대해 비밀번호 인증을 더 이상 지원하지 않습니다.
대신 개인 액세스 토큰(PAT)이나 SSH 키를 사용하여 인증을 진행해야 합니다.
개인 액세스 토큰(PAT)은 주기적으로 토큰을 재생성하고 업데이트하는 과정이 요구됩니다.
그러나 SSH 키는 모든 레포지토리 접근 시 동일한 SSH 키를 사용하므로 한 번 등록해 둔 기기는 다시 인증할 필요가 없습니다.
따라서 이 글에서는 SSH 키를 생성하고 등록하는 방법에 대해 소개하겠습니다.
$ 뒤에 작성되는 글은 직접 타이핑해야 하는 명령어이고, $ 없이 작성되는 글은 그에 대한 결과입니다.
Git에서 제공하는 공식 문서는 해당 링크로 확인할 수 있습니다.
🥕 SSH 키 확인
터미널에서 아래 명령어를 실행합니다.
$ cd ~/.ssh
$ ls
이때 $ ls의 결과가 아래와 같다면
authorized_keys2 id_dsa known_hosts
config id_dsa.pub
'id_dsa' 또는 'id_rsa'라는 이름의 파일에 들어있는 것이 개인키이고,
'id_dsa.pub' 또는 'id_rsa.pub'라는 이름의 파일에 들어있는 것이 공개키입니다.
위와 같은 파일이 있다면 키 생성 과정을 건너뛰고 키 등록을 진행하면 됩니다.
만약 파일이 없거나 .ssh라는 디렉토리도 없다면 새로운 SSH 키를 생성해야 합니다.(어렵지 않아요!)
🥕 SSH 키 생성
아래 명령어를 실행합니다.(레포지토리 위치는 상관 없습니다)
$ ssh-keygen
그러면 아래와 같은 결과가 나옵니다.
Generating public/private rsa key pair.
Enter file in which to save the key (/.ssh_파일이_저장될_위치/.ssh/rsa의_id):
키를 저장할 디렉토리를 입력하라는 의미입니다.
특별히 원하는 디렉토리가 있다면 디렉토리를 입력하고 엔터를 누릅니다.
그렇지 않다면 ( ) 안에 들어있는 기본 디렉토리에 저장하는 것을 추천합니다.
기본 디렉토리를 사용하려면 아무것도 적지 않고 엔터키를 누르면 됩니다.
다음으로 나오는 문구입니다.
Enter passphrase (empty for no passphrase): [패스프레이즈 입력 또는 Enter]
Enter same passphrase again: [패스프레이즈 재입력 또는 Enter]
SSH 키를 사용할 때 추가적인 보안을 위한 확인용 패스프레이즈를 입력하라는 의미입니다.
원하는 패스프레이즈를 입력하고 엔터를 누릅니다.
추가적인 보안을 사용하고 싶지 않다면 아무것도 적지 않고 엔터키를 누르면 됩니다.(본인만 사용하는 기기라면 없어도 괜찮습니다.)
디렉토리와 패스프레이즈의 입력이 끝나면 SSH 키가 발급되었다는 메시지가 출력됩니다!
Your identification has been saved in /.ssh_파일이_저장될_위치/.ssh/rsa의_id.
Your public key has been saved in /.ssh_파일이_저장될_위치/.ssh/rsa의_id.pub.
The key fingerprint is:
SHA256:...
The key's randomart image is:
+---[ED25519 256]---+
| ... |
| ... |
+----[SHA256]-------+
SSH 키가 생성되었으니 공개키를 나의 깃허브 계정에 등록하는 일만 남았습니다.
🥕 SSH 키 등록
터미널에서 아래 명령어를 실행합니다.
$ cat ~/.ssh/id_ed25519.pub
실행 결과로 나오는 메시지가 공개키입니다. 해당 메시지를 처음부터 끝까지 복사해주세요.
아래는 공개키의 예시입니다.
ssh-ed25519 ~~~~~.local
이제 깃허브 웹 사이트로 이동하여 화면 우측 상단에 있는 프로필 사진을 클릭하고 Settings로 이동합니다.
그리고 좌측 메뉴에서 SSH and GPG keys를 선택합니다.
New SSH key라고 적힌 초록색 버튼을 눌러 Title을 적습니다.(예: My MacBook SSH Key)
Key에는 터미널에서 복사해 온 공개키를 붙여 넣습니다.
그리고 하단의 초록색 Add SSH key를 누르면 SSH 키 등록이 완료됩니다.
🥕 SSH 키 사용
경우1) 원격 레포지토리를 클론하려는 경우
보통 HTTPS를 복사하여 진행하지만 HTTPS가 아닌
SSH를 눌러 'git@github.com:유저네임/레포지토리_이름.git' 형태의 링크를 복사하여 클론을 진행합니다.
경우2) 이미 HTTPS를 사용하는 레포지토리에서 작업하던 경우
SSH 키를 생성하고 깃허브에 등록했는데 여전히 키체인을 묻는다면, SSH 대신 HTTPS를 사용하고 있을 가능성이 있습니다.
작업 디렉토리에서 아래 명령어를 실행합니다.
git remote -v
SSH 대신 HTTPS를 사용하고 있을 경우 아래와 같은 결과가 출력됩니다.
origin https://github.com/유저네임/레포지토리_이름.git (fetch)
origin https://github.com/유저네임/레포지토리_이름.git (push)
SSH url로 바꿔주기 위해 깃허브에서 SSH url을 복사하여 아래 명령어를 실행합니다.
git remote set-url origin git@github.com:유저네임/레포지토리_이름.git
url이 잘 설정되었는지 확인하면 됩니다.
git remote -v
잘 바뀌었다면 아래와 같은 결과가 출력됩니다.
origin git@github.com:유저네임/레포지토리_이름.git (fetch)
origin git@github.com:유저네임/레포지토리_이름.git (push)
읽어주셔서 감사합니다:)