본문 바로가기

TOOL

[github] ssh 공개키로 github 연결하는 이유

728x90

 

github 레파지토리를 로컬에 연결할경우 https 와 ssh 둘 중 하나의 방법으로 remote하곤 했었다.

ssh는 키를 이용하여 해당 로컬에 연결하는 것인데, 이 방법을 택하여 연결하는 필요성이 와닿진 않았다. 

보완상 좋다? 라고만 구글링해도 나와서...

하지만 단체 및 내 계정의 레파지토리를 로컬에 연결하여 터미널로 풀, 커밋 및 푸시를 날리고 싶을 경우 자꾸만 아래와 같은 에러를 뿜었다.

remote: Repository not found.
fatal: repository 'https://github.com/vsquaregit/Publish-DEMO.git/' not found

 

잘 생각해보면, 내계정 즉, 내가 주인이 아닌 계정에 만든 레파지토리 즉, 단체에서 날 초대하여 Admin 권한을 준상태에서 내 로컬에 연결 후 pull 을 하려고 하니 자꾸 찾을 수 없다는 것이였다. 

빨간 네모칸이 로컬에서 설정한 git config user.name과 불일치하다면 터미널에서 정상작동 X

 

따라서 공개키를 해당 로컬에 만들고 저장하여 Admin권한을 준 계정에 연결 후 로컬에 remote하여야 정상 작동이 될것이다. 

 

bash 터미널에서, 아래 순서대로 공개키 설정, 할당 및 ssh로 git repository remote하기

 

1. 먼저 Admin권한을 준 user.name과 user.email을 확인 및 기존 https로 연결되어있는 Publish-DEMO 레파지토리 삭제

git config user.name
git config user.email

git remote remove origin

2. user.name에 대한 계정에 공개키 할당전 기존에 만든 공개키 존재 조회

cd ~/.ssh
ls

3. cd ~/.ssh 명령어로 찾을 수 없다는 콘솔이 나오면, "cd ~/"로 최상위로 우선 이동

 

4. 키 생성 아래 명령어 입력후 경로 선정 확인이 나오면 엔터

ssh-keygen -t ed25519 -C "user.email"

5. 사용자 암호(Passphrase) 입력. 입력 원치않으면 엔터 두번

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

6. 아래와 같이 비슷하게 나오면 키 생성이 완료된 것이다.

***** 공개키는 공개되도 상관없지만 개인키는 절대 공개되어선 안된다.

$ ssh-keygen -t ed25519 -C "user.email"
Generating public/private  key pair.
Enter file in which to save the key (/c/Users/): 
Created directory '/c/Users/'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 
Your identification has been saved in /c/Users/
Your public key has been saved in /c/Users
The key fingerprint is:
EDDD345:dfddafsdfsafQWWEWedo user.email
The key's randomart image is:
+--[eeeee 111]--+
|         |
|        |
|         |
|       |
|            |
|      |
|         |
|         |
|                 |
+----[eeeeee]-----+

7. 깃허브 해당 계정에 연결을 위해 생성한 공개키 출력 명령어 입력 후 나오는 공개키 나열 번호를 복사한다.

cat ~/.ssh/공개키명.pub

 

 

8. 해당 깃허브 계정으로 깃허브 홈페이지 로그인 및 우측 상단 Settings에서 SSH and GPG keys 클릭 후 New SSH key 버튼 클릭후 아까 복사한 공개키를 저장한다. 

 

9. 해당 레파지토리로 돌아가 하단 캡처에서 보이는 네모 Code 버튼을 눌러 SSH로 설정 및 url을 복사한다.

 

10. 다시 해당 레파지토리가 있는 로컬 경로에서 ssh로 레파지토리 연결.

첫번째 방법,

git remote add origin git@github.com:user/repository.git

두번째 방법,

git clone git@github.com:user/repository.git

11. 방금 ssh로 연결된 저장소 확인

git remote show

12. 브랜치 연결 확인

git branch -al

13. pull 해보면 정상으로 당겨져오는 것을 알 수 있다.

git pull origin main

😊