관리 메뉴

김종권의 iOS 앱 개발 알아가기

[git] SSH키 생성 및 git 리모트 저장소에 SSH로 접속 본문

Git, CocoaPods, Xcode, Shell

[git] SSH키 생성 및 git 리모트 저장소에 SSH로 접속

jake-kim 2021. 2. 11. 12:14

Git에 쓰이는 SSH

  • git 리모트 저장소에 push할 경우 아무나 push되지 않고 사용자 인증이 필요
  • git에 사용되는 사용자 인증 방법은 두 가지 존재 (HTTPS, SSH)
  • 컴퓨터에 종속적이지 않고 key값만 알고있으면 복붙해서 사용할 수 있는 HTTPS사용 권장
    - HTTPS는 username, password를 입력 후 접근
    - git에서는 access token을 발급하여 username, password필요없게끔 할수있음 (gitlab -> settings -> 토큰발급 -> 복사 -> git remote정보에 입력)

SSH란

  • Secure Shell Protocol: 네트워크 프로토콜 중 하나이며, 통신할 때 사용되는 규약
  • 쓰임: 두 가지 (데이터 전송, 원격 제어)
  • git 리모트에서는 데이터 전송을 위해 SSH사용

SSH원리

  • 비밀번호의 입력을 통한 접속을 하지않음
  • 비대칭 키 방식 - 한 쌍의 Key를 통해 인증 (Private Key, Public Key)
    - public key로 암호화한 것은 private key로만 복호화 가능
    - private key로 암호화한 것은 public key를 통해 복호화 가능
    - 즉, git push할 때 private key가 존재하는 컴퓨터에서만 push하여, remote에서 public key로 해석

SSH 생성 방법

  • terminal에서 ssh키 생성: 아래 명령어 입력 -> 암호를 입력하라고 나올 때, 특별한 암호 설정을 하지 않고 enter키를 해야 추후 세팅에 편함
    - t: 생성할 key 타입
    - b: 생성할 키의 bit 수
    - C: 코멘트 (대문자여야 함)
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • ssh파일 확인, 디폴트 경로: ~/.ssh
cd ~/.ssh

파일 확인

  • id_rsa는 private key, id_rsa.pub는 public key를 의미
  • 이 중에서 public key를 Github에 저장해야함 -> public key를 열어서 복사
// 아래 명령어 실행 후 나온 public key를 복사
$ cat id_rsa.pub

SSH-Agent사용: SSH 키 등록 중 비번을 입력한 경우

  • SSH-Agent 
    - ssh를 사용하는 이유는 git push할 때 비번을 입력하지 않으려고 하는것, 하지만 ssh키에 비번을 설정 한 경우 매번 비번을 입력해야하는 번거로움이 생김
    - SSH-Agent를 사용하면 비밀번호를 암호화하여 기억해 두고 private key를 입력함면 다음부터는 기억한 비밀번호를 이용
    - socket을 생성하여 원격 서버와 통신하기 때문에 보안성에 좋음
  • SSH-agent 백그라운드 실행
$ eval "$(ssh-agent -s)"
  • private key를 SSH-Agent에 등록 (등록 과정 중 키 입력 필요)
$ ssh-add ~/.ssh/id_rsa

Git에 SSH 키 등록

  • git 접속 -> 우측 Settings 메뉴

  • 좌측 SSH Keys 메뉴

  • 위에서 복사한 public key를 복붙 -> title 입력 -> Add Key버튼

  • git 설정 - clone 시 ssh 주소로 복사
  • remote등록 시, ssh주소로 설정
$ git remote add origin git@gitlab.com:user/repository.git
Comments