# 개요
Cloning into 'git-flow-test'...
Username for 'https://github.com': devvace
Password for 'https://devvace@github.com':
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/adapfit-lab/git-flow-test.git/'
Private 저장소를 Clone해서 가져오려고 했더니 나타나는 메시지이다.
2021년 8월 13일부터 비밀번호 인증이 removed 라고 한다. 이제는 Private 저장소를 가져오기 위해서는 SSH와 같이 보안이 적용된 방법을 사용해야한다.
# SSH 공개키/개인키 만들기
SSH를 사용하기 위해서는 공개키와 개인키를 만들어야한다.
다음의 명령어를 이용해 이전에 만든적이 있는지 확인해보자
% cd ~/.ssh
따로 위치를 지정해주지 않은 이상 기본 위치는 ~/.ssh
이곳이다.
아무것도 없다면 다음의 명령어를 이용해서 키를 만들어보자
% ssh-keygen -t ed25519 -C "your_email@example.com"
ED25519 방식이 싫다면 RSA알고리즘을 이용해 키 생성을 할 수도 있다.
% ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
먼저 키 파일을 어디에 저장할지에 대해 지정할 수 있다.
그냥 Enter 키를 눌러서 Default 위치(/Users/[계정]/.ssh)에 저장하자.
Enter file in which to save the key (/Users/[계정]/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
그리고 비밀번호를 입력해주자.
비밀번호를 입력하지 않고 Enter키를 눌러도 되는데, Github에서도 비밀번호를 입력하도록 권장한다.
Your identification has been saved in /Users/[계정]/.ssh/id_ed25519
Your public key has been saved in /Users/[계정]/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:IegR1G225Di4WohvH1Rb892sA2LZC3rpCERxpz7q2KU your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|.o.+.o |
| .* Oo |
|oo Xoo. . |
|B =..... . |
|=O *. S |
|+.@ * |
| = =.* |
|o.oo. * |
|..E o . |
+----[SHA256]-----+
생성 완료!
생성된 공개키와 개인키를 확인해보면?
% cd ~/.ssh
% ls
id_ed25519 id_ed25519.pub
id_ed25519
가 개인키이고, id_ed25519.pub
이 공개키이다.
말그대로 공개키는 공개되어도 되는 키이고, 개인키는 공개되어서는 안 된다.
# 공개키 등록
이제 Github에는 공개키를 등록해줘야 한다.
Github에 로그인 후 계정의 Settings 메뉴를 선택하자.
그리고 SSH and GPG keys 메뉴를 선택 후 New SSH key를 선택하자.
이제 공개키를 등록하면 되는데, 아까 전에 생성한 공개키를 복사하도록 하자.
본인이 Windows를 사용한다면 clip
, macOS를 사용한다면 pbcopy
명령어를 사용하면 파일 안에 있는 내용을 복사할 수 있다.
$ pbcopy < ~/.ssh/id_ed25519.pub
복사한 내용을 붙여넣고, Add SHH key 버튼을 누르자.
생성 완료!
# SSH 접속 설정
~/.ssh/config
파일 아래에 다음의 내용을 추가하자.
Host github.com
IdentityFile ~/.ssh/id_ed25519
User git
이후 다음 명령어로 테스트해볼 수 있다.
비밀번호를 입력하는 창에는 Key 생성시 작성한 비밀번호를 넣으면 된다.
% ssh -T git@github.com
Enter passphrase for key '/Users/[계정]/.ssh/id_ed25519':
Hi [Github 계정 아이디]! You've successfully authenticated, but GitHub does not provide shell access.
※ 참고: Multi Account 사용하기
보통 하나의 데스크톱 또는 노트북에서 하나의 계정을 사용하면 간단하지만, 상황에 따라 Mutli 계정을 사용해야할 수도 있다.
추가로 사용할 계정의 Private 및 Public key를 생성하고, config 파일(~/.ssh 안에 위치)을 수정하면 된다.
# Example
Host github-company
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/id_ed25519-lainyzine-company
Host github-personal
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/id_ed25519-lainyzine-personal
그리고, 공개키 등록 절차를 통해 새로 생성한 공개키를 등록하고, git remote add
명령어를 사용해서, 활성화할 유저를 입력하면 된다.
$ git remote add origin git@github-company:lainyzine/lainyzine.git
git@
뒤에 붙은 github-company
값을 잘 입력하자.
이후 git push
를 진행하면 된다.
※ 참고: remote: error: GH007: Your push would publish a private email address.
Github > User Settings > Emails > Block command line pushs that expose my email 체크 여부를 살펴보고 체크되어있으면 해제하자.
# Git clone
자 이제 대망의 Private 저장소 Clone을 해보자,
% git clone git@github.com:test/git-flow-test.git
Cloning into 'git-flow-test'...
The authenticity of host 'github.com (20.200.245.247)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/devace/.ssh/id_ed25519':
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 7 (delta 1), reused 5 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
Resolving deltas: 100% (1/1), done.
끝!