티스토리 뷰

해당 글은 https://blog.naver.com/kbs4674/221215364595 로 부터 게시글이 이전되었습니다.

 

Github 작업을 하면서 만약 Private Git 저장소를 통해 작업이 이뤄질 경우 Push, Pull 작업을 할 때 마다 계~속 암호를 묻곤 합니다.

한 두번 묻는거면 좋겠는데 계에에속 물어보니까 슬슬 진절머리가 나더라고요..

이 글 바로 전 글에는

git config --global credential.helper 'cache --timeout 7200'

위 명령어에 대해 소개를 했었는데, 이 명령어는 한시적으로만 안 물을 뿐, 결국은 나중에 또 계정정보를 묻게 되어있습니다.

그래서 이번에는 영구적으로 Github 계정정보를 묻지도 않는 SSH-Keygen에 대해 소개하고자 합니다.

 

 

  • SSH-Keygen

Github을 써오신 분이라면, Repository를 생성 후, 첫 Push 전에 나오는 위 화면에서 HTTPS/SSH 선택란에 대해 보신적이 있을겁니다.

HTTPS Remote 통신은

git remote add origin master https://github.com/kbs4674/test.git

위와같이 저희가 흔히 쓰는 방법이지만,

SSH Remote 통신은

git remote add origin master git@github.com:kbs4674/test.git

뭔가 좀 색다른 주소창(?)을 가지고 Remote를 합니다.

 

일단 방법부터 소개하겠습니다.

 

 

  • SSH Key 인증서 받기

1. 새로운 Github 저장소를 만들어주세요.

 

2. 터미널로 돌아와서, Github로 Push 할 디렉토리로 가셔서 다음 명령어를 입력해주세요.

ssh-keygen

위 명령을 치게 되면

 

위 사진과 같이 뭔가 Enter file in which to save the key 부터 해서 막 묻는데, 그냥 3번 연속 엔터를 쳐주세요.

그러면 RSA 키가 만들어졌다고 합니다.

 

그리고 일반적인 ls 명령으로서는 겉으론 티가 안나지만, ls -a 를 입력하면 .ssh 라는 숨겨진 디렉토리가 보입니다!

 

또, cd .ssh 명령어를 통해서 .ssh 폴더로 가면 id_rsa 파일과 id_rsa.pub 파일이 만들어진게 확인이 됩니다.

이에 대한 설명은 조금있다 설명드리겠습니다.

일단 여기서 저희가 필요한 것은 id_rsa.pub 입니다.

 

cat id_rsa.pub

위 명령어를 입력해서 id_rsa.pub의 내용을 보시면

위 사진과 같이 알 수 없는 문자로 막 되어있는데, 저 문자들을 복사(Ctrl+C) 합니다.

 

3. Github로 돌아가서,

 

자신의 프로필 사진을 누르면 보이는 메뉴들 중, Settings 를 클릭합니다.

Settings를 누르면 화면 좌측에 다양한 메뉴들이 보이는데, 그 중 SSH and GPG keys를 클릭해주고,

이어서 New SSH Key를 클릭해줍니다.

New SSH Key를 누르면 Title(제목)과 Key를 입력하라고 하는데

Title(제목)은 자기가 원하는 이름으로 아무렇게 입력해 주시고,

Key는 2번 과정에서 id_rsa.pub 에 대해 복사(Ctrl+C) 했던 코드를 Key 내용 form에 붙여넣기(Ctrl+V) 합니다.

그리고 Add SSH Key를 눌러줍니다.

 

그러면 새로운 SSH Key 생성과 함께

메일로 새 SSH Key 연결소식도 알려줍니다.

 

4. 다시 터미널로 돌아와서, Git에 Push 전에 한가지 작업을 할게 있습니다.

ssh-keygen

위 명령어로 생성된 .ssh 디렉토리에 대해서는 절대 Push가 되어서는 안됩니다.

이를 막기위해 .gitignore을 만들어서, .gitignore 파일 속에 /.ssh 내용을 적어냅니다.

## .gitignore
/.ssh

 참고  .gitignore 이란? [클릭]

 

5. 이어서 다음 명령어들을 입력합니다.

git init

우선 Git 로컬 저장소를 생성해 내는데 까지 하고, Git remote 하실 때

주소는 SSH 형태의 주소로 입력해줍니다.

제 기준으로 예시 remote를 입력한다면,

git remote add origin git@github.com:kbs4674/test.git

위와같이 입력해야 합니다.

 

이후는 똑같습니다.

git add .
git commit -m "init"
git push -u origin master

 

6. 5번 과정의 명령어들을 다 입력해내면

기존 HTTPS Remote 때와는 다르게 RSA Key를 확인하고, 계속 연결을 진행할거나는 물음이 나옵니다.

yes를 입력하면

 계정을 묻지 않고 바로 push가 진행 되고,

Git 저장소에는 Push가 잘 된 결과물을 보실 수 있습니다.

 

 

  • SSH-Keygen 간단 이론

RSA 암호화는 공개키비밀키를 이용한 두 소수의 곱을 이용한 암호화 알고리즘으로, 엄청 큰 숫자의 곱에 대해서는 최소공배수를 구하기 까다롭다는 점을 이용한 방식입니다. 현재까지도 RSA 암호화는 거의 뚫기에는 불가능할 정도의 암호화 알고리즘으로 알려져 있습니다.

 

우선 저희가

ssh-keygen

명령어를 입력하면 id_rsa와 id_rsa.pub 가 생성이 되었는데, id_rsa가 비밀키, id_rsa.pub가 공개키 개념인 셈으로서,

Github 측에서 id_rsa.pub로 증명을 시도하여 id_rsa와 한 쌍의 키 셋트임을 증명을 하고, 작업을 수행하는 방식입니다.

* 반대인 경우도 성립

 

다만, 보안을 위해 한 가지 주의할 것은 비밀키 id_rsa가 노출되어선 안됩니다.

댓글
댓글쓰기 폼
공지사항
Total
215,953
Today
53
Yesterday
114
링크
«   2022/10   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함