github-white-logo-700

정보/뉴스

github-white-logo-700

담운 0 1,406 2019.06.08 16:40

GitHub를 사용할 때 내 저장소에 파일을 업로드 해야하는 경우가 많습니다. 이 때 git push 명령을 사용하여 소스코드 & 파일을 업로드할 수 있지만, 이 과정에서 해당 저장소를 수정할 수 있는 권한을 가진 사용자 인증 과정이 필요합니다.

그러나 지속적으로 사용자 계정 정보를 입력하지 않고 싶거나, GitHub 계정이 2FA(Two-Factor Authentication)에 의해 이중 인증이 필요한 상황이 생길 때가 있습니다. (물론 이는 토큰 생성으로 해결할 수 있습니다. 여기를 클릭하여 참고해보세요.) 이럴 때는 HTTPS가 아닌 SSH를 사용하여 접속/업로드할 수 있습니다.

참고 : GitHub에서는 SSH 보다는 HTTPS 프로토콜을 사용하는 것을 권장하고 있습니다. 단, 보안상의 문제와는 관련이 없습니다.

여기서는 GitHub & Linux를 기준으로 설명드리겠습니다. (GitLab 등의 대부분의 버전 관리 툴이 아래 방법과 비슷할 것입니다.)

 

 

Git SSH 키 생성 및 GitHub 사용자 인증하기

GitHub에 접속하기 위한 SSH 인증은 기존의 리눅스 서버에 접속하기 위해 사용하는 공개 키 인증(Public Key Authentication)과 유사합니다.

SSH 인증을 위해서는 서버 내에서 사용자 키의 역할을 하는 공개 키(Public Key)개인 키(Private Key)생성해야 합니다.

이미 자신의 서버에 SSH 키를 가지고 있는 경우 이 과정을 건너뛰어도 됩니다. 일반적으로 사용자 키 파일은 ~/.ssh 경로에 존재합니다.

 

사용자 키를 새롭게 생성하기 위해 서버에 SSH로 접속하여 터미널을 열어줍니다. 사용자 키는 현재 로그인한 사용자가 직접 해야하므로 가능한 root 권한으로 진행하지 않도록 합니다.

현재 사용자의 홈 디렉토리로 이동해줍니다.

$ cd ~
  • $ cd ~
$ cd ~

이제 .ssh 디렉토리로 이동합니다. 없다면 다음과 같이 생성 후 (생성 시 권한은 rwx------) 이동합니다.

$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cd .ssh
  • $ mkdir ~/.ssh
  • $ chmod 700 ~/.ssh
  • $ cd .ssh
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ cd .ssh

이후 다음과 같이 사용자 키 생성 명령어를 입력해줍니다. (my-email@example.com 대신 자신의 이메일 주소를 입력합니다.)

$ ssh-keygen -t rsa -b 4096 -C "my-email@example.com"
  • $ ssh-keygen -t rsa -b 4096 -C "my-email@example.com"
$ ssh-keygen -t rsa -b 4096 -C "my-email@example.com"

다음과 같이 나타나면 엔터를 눌러줍니다. (경로를 다른 위치로 특별히 지정해야 하는 경우에만 절대 경로를 입력해줍니다.)

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
  • Generating public/private rsa key pair.
  • Enter file in which to save the key (/home/user/.ssh/id_rsa):
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

이제 이 사용자 키의 암호(Passphrase)를 입력해줍니다. 동일 암호를 두 번 입력하여 확인 과정을 마칩니다.

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

다음과 같이 나타나면 키 생성이 완료 된 것입니다.

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qYWyFlIUh/DxwRyzRj961ymIFyhgKchwpAyl0YJcIIm my-email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| Eo+X+.          |
|+O.B.O           |
|+.  @ =          |
|o. B *   o .     |
|. . B = S o      |
|   . = + .       |
|    o =          |
|   .         =   |
|                 |
+----[SHA256]-----+
  • Your identification has been saved in /home/user/.ssh/id_rsa.
  • Your public key has been saved in /home/user/.ssh/id_rsa.pub.
  • The key fingerprint is:
  • SHA256:qYWyFlIUh/DxwRyzRj961ymIFyhgKchwpAyl0YJcIIm my-email@example.com
  • The key's randomart image is:
  • +---[RSA 4096]----+
  • | Eo+X+. |
  • |+O.B.O |
  • |+. @ = |
  • |o. B * o . |
  • |. . B = S o |
  • | . = + . |
  • | o = |
  • | . = |
  • | |
  • +----[SHA256]-----+
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qYWyFlIUh/DxwRyzRj961ymIFyhgKchwpAyl0YJcIIm my-email@example.com
The key's randomart image is:
+---[RSA 4096]----+
| Eo+X+.          |
|+O.B.O           |
|+.  @ =          |
|o. B *   o .     |
|. . B = S o      |
|   . = + .       |
|    o =          |
|   .         =   |
|                 |
+----[SHA256]-----+

 

ls -l 명령어를 사용하여 키 파일이 생성되었는지 확인해보겠습니다.

$ ls -l
total 12
-rw-------. 1 user user  393 Apr  6 22:27 authorized_keys
-rw-------. 1 user user 3326 May 12 18:01 id_rsa
-rw-r--r--. 1 user user  746 May 12 18:01 id_rsa.pub
  • $ ls -l
  • total 12
  • -rw-------. 1 user user 393 Apr 6 22:27 authorized_keys
  • -rw-------. 1 user user 3326 May 12 18:01 id_rsa
  • -rw-r--r--. 1 user user 746 May 12 18:01 id_rsa.pub
$ ls -l
total 12
-rw-------. 1 user user  393 Apr  6 22:27 authorized_keys
-rw-------. 1 user user 3326 May 12 18:01 id_rsa
-rw-r--r--. 1 user user  746 May 12 18:01 id_rsa.pub

 

생성 된 파일 중 id_rsa개인 키, id_rsa.pub공개 키입니다. 개인 키는 절대로 외부 서버나 위치 사용자에 알려주어서는 안되므로 보안에 유의하여 보관해주셔야 합니다. 우리가 GitHub에서 이 사용자 키를 사용하여 사용자 인증을 하기 위해서는 ‘공개 키’ 파일에 있는 정보GitHub에 알려주어야 합니다.

 

 

생성한 공개 키 등록 & 복사

공개 키 내용을 복사하기 위해 cat 명령어를 사용하여 파일을 출력해보겠습니다. 아래와 같이 공개 키 파일의 내용이 보여질 것입니다.

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHWj+cNJF9qA3GnyxWyFqKXF+YRdIkoDBhQuGN6j3IZaJNtntIbZp4v8l2tPGeYbY+vyaCZHU2qZ62Zs4S/ov+4C7LONvINBF8BUCpveOsdMgfbMT3EnfZHsGUFh3iaRcHNwN/ZcdAasSnj1LFJ2wkOqUWgVGWwZL1uvr23IyTQrZwv7ShYyp4XgYbvILSWsID2E8WvckcnxYC936iTYkugFHlJQXybeTxKcccMprwWc/WtIwYWDTzZM4DQdShcm5/dTnHDkQwh27ziCkXMnaow9WfYxw+pyJ/BmFQVT0VxTIxkwJ6285QBGsgSqK+NRcYUVX/ubVk6gsAddPOg5E94kg+6bjs9xyuNTCrAyC9eipeyrSkbB85uLsBaZckkVdebllHMUKCBiCjLL61Lv8WS1PbOFouXzKE23HMf57XXXNtDzHkqyeP035M04Q5BTk7Rr18OgMkzOWsHVM5c5ai4MjaXuEHE0cCsrrDCxYCnzbU39aJgUFekQG3CGCv97bGjT3WN5qD9pUaXhrCTgIjYQtbWKeRfyI0+oxsMZiEEuOmCNuv89/6Dkz2v52bCQOW0k6oIiiQIqehyVObfk7Rffq+uwfowBZco9kxFWEaKKzddQy0STcjmuA7g3UjjZNUV+yA+CepVEwFF3MLNtD1GQhmhgQPiHQwWkEzCHhafLw== my-email@example.com
  • $ cat ~/.ssh/id_rsa.pub
  • ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHWj+cNJF9qA3GnyxWyFqKXF+YRdIkoDBhQuGN6j3IZaJNtntIbZp4v8l2tPGeYbY+vyaCZHU2qZ62Zs4S/ov+4C7LONvINBF8BUCpveOsdMgfbMT3EnfZHsGUFh3iaRcHNwN/ZcdAasSnj1LFJ2wkOqUWgVGWwZL1uvr23IyTQrZwv7ShYyp4XgYbvILSWsID2E8WvckcnxYC936iTYkugFHlJQXybeTxKcccMprwWc/WtIwYWDTzZM4DQdShcm5/dTnHDkQwh27ziCkXMnaow9WfYxw+pyJ/BmFQVT0VxTIxkwJ6285QBGsgSqK+NRcYUVX/ubVk6gsAddPOg5E94kg+6bjs9xyuNTCrAyC9eipeyrSkbB85uLsBaZckkVdebllHMUKCBiCjLL61Lv8WS1PbOFouXzKE23HMf57XXXNtDzHkqyeP035M04Q5BTk7Rr18OgMkzOWsHVM5c5ai4MjaXuEHE0cCsrrDCxYCnzbU39aJgUFekQG3CGCv97bGjT3WN5qD9pUaXhrCTgIjYQtbWKeRfyI0+oxsMZiEEuOmCNuv89/6Dkz2v52bCQOW0k6oIiiQIqehyVObfk7Rffq+uwfowBZco9kxFWEaKKzddQy0STcjmuA7g3UjjZNUV+yA+CepVEwFF3MLNtD1GQhmhgQPiHQwWkEzCHhafLw== my-email@example.com
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDHWj+cNJF9qA3GnyxWyFqKXF+YRdIkoDBhQuGN6j3IZaJNtntIbZp4v8l2tPGeYbY+vyaCZHU2qZ62Zs4S/ov+4C7LONvINBF8BUCpveOsdMgfbMT3EnfZHsGUFh3iaRcHNwN/ZcdAasSnj1LFJ2wkOqUWgVGWwZL1uvr23IyTQrZwv7ShYyp4XgYbvILSWsID2E8WvckcnxYC936iTYkugFHlJQXybeTxKcccMprwWc/WtIwYWDTzZM4DQdShcm5/dTnHDkQwh27ziCkXMnaow9WfYxw+pyJ/BmFQVT0VxTIxkwJ6285QBGsgSqK+NRcYUVX/ubVk6gsAddPOg5E94kg+6bjs9xyuNTCrAyC9eipeyrSkbB85uLsBaZckkVdebllHMUKCBiCjLL61Lv8WS1PbOFouXzKE23HMf57XXXNtDzHkqyeP035M04Q5BTk7Rr18OgMkzOWsHVM5c5ai4MjaXuEHE0cCsrrDCxYCnzbU39aJgUFekQG3CGCv97bGjT3WN5qD9pUaXhrCTgIjYQtbWKeRfyI0+oxsMZiEEuOmCNuv89/6Dkz2v52bCQOW0k6oIiiQIqehyVObfk7Rffq+uwfowBZco9kxFWEaKKzddQy0STcjmuA7g3UjjZNUV+yA+CepVEwFF3MLNtD1GQhmhgQPiHQwWkEzCHhafLw== my-email@example.com

ssh-rsa부터 Comment 부분(my-email@example.com)까지 모두 복사해둡니다.

 

다음으로 SSH-Agent에 생성한 사용자 키 중 개인 키 파일을 등록해주어야 합니다.

먼저 eval $(ssh-agent -s) 명령어를 사용하여 확인해봅니다. (pid 번호는 아래와 다를 수 있습니다.)

$ eval $(ssh-agent -s)
agent pid 22654
  • $ eval $(ssh-agent -s)
  • agent pid 22654
$ eval $(ssh-agent -s)
agent pid 22654

이제 ssh-add 명령어를 사용하여 개인 키 파일을 사용하여 ssh-agent에 등록합니다. (등록 과정 중 사용자 키 암호를 입력해야 합니다.)

$ ssh-add ~/.ssh/id_rsa
  • $ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa

 

 

GitHub에 공개 키 등록하기

이제 GitHub 홈페이지로 이동해보겠습니다. 아래 URL에서 로그인을 진행합니다.

https://github.com/login

 

로그인이 완료되었다면 우측 상단 메뉴의 자신의 프로필을 클릭한 후 ‘Settings’ 메뉴를 클릭합니다.


 이어서 좌측 메뉴에서 ‘SSH and GPG keys’ 메뉴를 클릭합니다.


 

다음으로 우측 상단(SSH Keys 항목)의 ‘New SSH Key’ 버튼을 클릭하여 새로운 SSH 키를 등록합니다.


 

아래와 같이 각 입력란에 키 정보를 입력합니다.

  • Title : 키 이름
  • Key : 상단에서 복사한 공개 키 내용

입력이 완료되면 ‘Add SSH Key’ 버튼을 클릭하여 등록을 완료합니다.


 

SSH 키가 문제 없이 등록된 것을 확인합니다.


 

 

Git 설정 변경하기

GitHub에서 SSH를 사용하려면 먼저 사용을 원하는 저장소에 방문하여 다음과 같이 SSH 경로를 복사해야 합니다.

‘Clone or download’ – ‘Use SSH’ 를 클릭하여 git@github.com:[계정명]/[저장소명].git 을 복사합니다.


이제 HTTPS 접근 방식이 아닌 SSH 접속 방법을 사용하여 GitHub 저장소에 접근할 수 있도록 Git 설정을 변경해주어야 합니다.

리눅스 서버 내에 git 저장소가 초기화 된 경로가 /home/www/html이라고 가정해보겠습니다. 만약 아직 git 저장소 초기화가 안되었다면 원하는 경로에서 git init 명령어를 사용하면 됩니다. 다음 명령어를 입력하여 해당 경로로 이동합니다.

$ cd /home/www/html
  • $ cd /home/www/html
$ cd /home/www/html

 

다음 명령어를 사용하여 remote 정보를 갱신합니다. 여기에 사용되는 git 주소는 방금 전에 복사했던 SSH 경로를 붙여넣습니다.

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

git remote show 명령어로 추가한 연결된 저장소를 확인할 수 있습니다.

$ git remote show
origin
  • $ git remote show
  • origin
$ git remote show
origin

 

임의의 파일을 commit하기 위해 test.txt 파일을 변동사항에 추가한 후, master 브랜치로 push하여 서버에 업로드해보겠습니다.

$ git add test.txt
$ git commit -m "test"
$ git push origin master
  • $ git add test.txt
  • $ git commit -m "test"
  • $ git push origin master
$ git add test.txt
$ git commit -m "test"
$ git push origin master

다음과 같이 호스트 키 저장 여부를 묻는다면 yes를 입력합니다.

The authenticity of host 'github.com (192.###.###.###)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXU##################################.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:##:##:##:##:##:##:##:##.
Are you sure you want to continue connecting (yes/no)?
  • The authenticity of host 'github.com (192.###.###.###)' can't be established.
  • RSA key fingerprint is SHA256:nThbg6kXU##################################.
  • RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:##:##:##:##:##:##:##:##.
  • Are you sure you want to continue connecting (yes/no)?
The authenticity of host 'github.com (192.###.###.###)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXU##################################.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:##:##:##:##:##:##:##:##.
Are you sure you want to continue connecting (yes/no)?

 

파일이 문제 없이 업로드되는 것을 확인할 수 있습니다.

Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 258 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To git@github.com:user/repository.git
   481cdf6..e04da7d  master -> master
  • Counting objects: 3, done.
  • Delta compression using up to 2 threads.
  • Compressing objects: 100% (2/2), done.
  • Writing objects: 100% (2/2), 258 bytes | 0 bytes/s, done.
  • Total 2 (delta 1), reused 0 (delta 0)
  • remote: Resolving deltas: 100% (1/1), completed with 1 local object.
  • To git@github.com:user/repository.git
  • 481cdf6..e04da7d master -> master
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 258 bytes | 0 bytes/s, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To git@github.com:user/repository.git
   481cdf6..e04da7d  master -> master

이제 별도의 사용자 이름과 암호를 묻지 않고 저장소

Comments

번호 제목 글쓴이 날짜 조회
72 과연 양방향매매로 수익낼 수가 있는가… 댓글+1 담운 2020.05.14 2732
71 [해외선물] 실시간 시세신청 안내-지… 담운 2020.05.11 868
70 해외선물 실시간 시세 무료로 볼 수 … 담운 2020.05.10 1390
69 DB금융투자, 수수료 혜택 등 해외선… 담운 2020.04.02 770
68 위험 고지 담운 2020.03.31 760
67 리스크 고지 담운 2020.03.11 762
66 해외선물 증거금 담운 2019.10.20 1061
65 CME E-micro 담운 2019.10.20 1011
64 파생상품 양도소득세 확정신고 안내 담운 2019.09.25 1088
63 주식, 암호화폐, 해외주식 세금 비교 담운 2019.09.13 1066
62 해외선물옵션 API 시세 유료화 정책… 담운 2019.08.28 2159
61 Github에 ssh키 생성하고 등록… 담운 2019.06.08 1375
열람중 github-white-logo-70… 담운 2019.06.08 1407
59 ssh-key 생성 및 github,… 담운 2019.06.08 1910
58 Git 서버 - SSH 공개키 만들기 담운 2019.06.08 1570
57 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 6160
56 GitHub SSH 키 생성 및 등록… 담운 2019.06.08 1732
55 기타 Git 명령어(cherry-pi… 담운 2019.06.08 1181
54 Merge와 Rebase 담운 2019.06.08 1305
53 Git 브랜치(Branch) 관리 담운 2019.06.08 1546
52 Git commit 수정하기, dif… 담운 2019.06.08 1361
51 Github 사용하기, remote,… 담운 2019.06.08 1838
50 Git 저장소 생성(init), 최초… 담운 2019.06.08 1433
49 Git 설치와 사용법(Git Bash… 담운 2019.06.08 1518
48 node.js git 사용법 담운 2019.06.08 1664
47 Windows에서 git 및 node… 담운 2019.06.08 1592
46 Nodejs로 구현한 서비스를 Caf… 담운 2019.06.08 1565
45 Git 활용 (기본적인 사용법) 담운 2019.06.08 1438
44 cafe24 nodejs git 저장… 담운 2019.06.08 4851
43 카페24 node.js 접속준비 담운 2019.06.08 2032
42 cafe24 node.js git 사… 담운 2019.06.08 3951
41 GitHub - 소스트리(Source… 담운 2019.06.07 2064
40 Sourcetree 설치 가이드 담운 2019.06.07 1306
39 [Git] 소스트리 (SourceTr… 담운 2019.06.07 1625
38 GitLab 업무환경 구성 가이드 담운 2019.06.07 1570
37 Git :: 소스트리(SourceTr… 담운 2019.06.07 1465
36 cafe24 에서 nodejs hos… 담운 2019.06.06 1999
35 카페24 node.js 접속준비 담운 2019.06.06 3248
34 카페24에서 Node.js 서버로 A… 담운 2019.06.06 1715
33 ssh 키 인증 방식으로 로그인하기 담운 2019.06.06 1660
Category
State
  • 현재 접속자 23 명
  • 오늘 방문자 82 명
  • 어제 방문자 114 명
  • 최대 방문자 608 명
  • 전체 방문자 174,308 명
  • 전체 게시물 145 개
  • 전체 댓글수 1 개
  • 전체 회원수 3 명
Facebook Twitter GooglePlus KakaoStory NaverBand