티스토리 뷰
해당 글은 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가 노출되어선 안됩니다.
'프로그래밍 공부 > Github' 카테고리의 다른 글
Github : Github 커밋 캐시 이슈 (커밋 기록을 지워도 접근이 가능한 과거 커밋 기록) (0) | 2019.11.03 |
---|---|
Github : git 캐시 삭제 (.gitignore 적용 안될 시) (0) | 2019.11.03 |
Github : Git작업 시 '한시적으로' 계정 확인하지 않기 / .bashrc 파일 설명 (0) | 2019.11.03 |
Github : Git pull 후, 충돌(Conflict) 발생 시 (1) | 2019.11.02 |
Github : .gitignore (0) | 2019.11.02 |