GitHub와 SSH

otto_dev·2022년 10월 17일
0
post-thumbnail

local에서 작업 후 서버에서 github를 통해 다운로드를 받으려고 했더니 문제가 발생했다. SSH 관련한 인증 문제다.

SSH란

SSH(Secure Shell): 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜.

SSH 프로토콜을 사용하여 원격 서버와 서비스에 연결하고 인증할 수 있다. SSH키가 있다면 username과 personal access token 없이도 GitHub에 연결할 수 있다. 커밋할 때도 마찬가지.

SSH 키를 생성해 GitHub와 내가 키를 나눠가지면 이 키를 가지고 안전한 통신을 할 수 있다. 이전 포스트 - 암호화 글 참고

SSH의 더 자세한 내용을 담은 블로그 글

SSH Key 생성하기

SSH Key가 이미 있는 경우

다음 단계로!

SSH Key가 없는 경우

  1. SSH-keygen
    SSH Key를 생성해야한다.
    shell에서 다음 명령어를 통해서 생성 가능하다.
$ ssh-keygen -t ed25519 -C "your_email@example.com"

or

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

ssh-keygen 옵션들
-b: 생성할 키의 비트수 지정. 최소 768, default 2048.
-C: 주석 입력 가능, 서버에 따라 특별한 용도로 사용됨.
-t: 암호화 방식 지정
-f: 저장할 파일명이나 경로 지정 가능


  1. key 저장 위치 설정
    그냥 엔터를 누를 경우 default 경로에 저장된다.
> Enter a file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]

  1. 보안 암호 설치
    SSH 패스워드 없이 자동 로그인 하기 위해서는 입력 없이 enter.
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]

RSA를 이용해 키 생성을 완료할 경우 id_rsa와 id_rsa.pub 두 개의 파일이 만들어진다.
id_rsa.pub는 공개키로 github에 등록해야한다.

ssh-agent에 비밀키 추가하기

  1. ssh-agent 백그라운드 실행
$ eval "$(ssh-agent -s)"
  1. SSH 비밀키를 ssh-agent에 추가
$ ssh-add ~/.ssh/id_ed25519
or
$ ssh-add ~/.ssh/id_rsa

GitHub에 공개키 추가하기(웹브라우저 버전)

  1. SSH 공개키 클립보드에 복사
$ clip < ~/.ssh/id_ed25519.pub
  # Copies the contents of the id_ed25519.pub file to your clipboard
  1. GitHub에 SSH key 추가
    (1) github에 로그인 및 설정
    (2) "Access" 섹션에 SSH & GPG 키 클릭
    (3) "New SSH Key" 또는 "Add SSH Key"
    (4) "Title" 필드에 설명 레이블 추가. e.g. 개인 노트북
    (5) "Key Type" 선택
    (6) "Key"에 SSH 공개키 붙여넣기.
    (7) "Add SSH key" 클릭

ssh 연결 테스트

$ ssh -T git@github.com
> The authenticity of host 'github.com (IP ADDRESS)' can't be established.
> RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
> Are you sure you want to continue connecting (yes/no)? yes
> Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

git clone

$ git clone git@github.com:(계정명)/(repo명).git

문제 해결!!

참고문헌

  1. github - connecting to github with ssh
  2. 제타위키 - 리눅스 SSH 패스워드 없이 자동 로그인
profile
공부 및 아카이브용 계정

0개의 댓글