SSH로 GitHub / CodeCommit 연결하기

2 minute read

비밀번호 인증 지원 종료

2021년 8월 13일부로 비밀번호 인증 지원이 종료되어 이전에 사용하던 방식을 사용할 수 없게 되어서 이 기회에 SSH 접속 방식으로변경 하게 되었다.

비밀번호 인증 지원 종료에 대한 안내는 여기에서 확인 할 수 있습니다.

원격 주소 확인하기

  • HTTPS 주소를 사용 해서 Git 레포지토리를 Clone 했다면 remote url 을 SSH 로 변경 해야 할 것이다.

아래 명령어로 remote url 을 확인 하고,

$ git remote 
> origin 
$ git remote get-url --all origin
> https://github.com/Seungwoo321/vuepress-blog-project.git

repository 에서 SSH 주소를 복사해서 변경한다.

git remote set-url origin git@github.com:Seungwoo321/vuepress-blog-project.git

SSH로 GitHub에 연결하기

깃허브 연결용 SSH 키 생성

다음 명령어를 실행한다. 이메일 주소는 깃허브 로그인 계정을 사용한다. 명령어를 실행하면 SSH 키가 생성되는 기본 경로와 파일명을 확인 또는 변경 하고, 암호를 두 번 입력한다. 이때 암호를 비워두고 엔터만 입력하면 키를 사용할 때 암호를 묻지 않는다.

ssh-keygen -t ed25519 -C "your_email@example.com"

이미 생성된 SSH 키가 있다면 이 과정을 생략하거나, -f 옵션으로 경로와 파일명을 지정 할 수 있다.

ssh-keygen -t ed25519 -f ~/.ssh/id2_ed25519 -C "another_email@example.com"

SSH 키를 ssh-agent 에 등록

  1. ssh 에이전트 실행

     $ eval "$(ssh-agent -s)"
     > Agent pid 59566
    

    :::tip 윈도우에서 unable to start ssh-agent service, error :1058 와 같은 에러가 발생한다면, 서비스에서 SSH Agent 서비스가 실행 상태인지 확인 합니다. :::

    macOS Sierra 10.12.2 이상을 사용하는 경우 자동으로 키를 로드하고 암호를 저장하기 위해서 ~/.ssh/config 에 다음 설정을 추가가 필요합니다.

     Host *
       AddKeysToAgent yes
       UseKeychain yes
       IdentityFile ~/.ssh/id_ed25519
    
  2. 에이전트에 키 등록

    • window & Linux
     ssh-add ~/.ssh/id_ed25519
    
    • Mac
     ssh-add -K ~/.ssh/id_ed25519
    

키 복사하기

  • window
clip < ~/.ssh/id_ed25519.pub
  • Linux
$ sudo apt-get update
$ sudo apt-get install xclip
# Downloads and installs xclip. If you don't have `apt-get`, you might need to use another installer (like `yum`)

$ xclip -selection clipboard < ~/.ssh/id_ed25519.pub
  • Mac
pbcopy < ~/.ssh/id_ed25519.pub

GitHub에 SSH 키 연결 하기

  1. 우측 상단 프로필을 클릭해서 Settings 메뉴로 접속한다.

    Click 'Settings' in profile image

  2. 좌측 사이드바에서 SSH and GPG keys 를 클릭한다.

    Click 'SSH and GPG Kets' in sidebar

  3. New SSH key 를 클릭한다.

    Click 'New SSH key' button

  4. 여러개의 키를 등록할 경우 Title 에 구분할 수 있는 이름을 주고, 위에서 복사한 값을 key 에 붙여 넣는다.

    Enter title and key

  5. Add SSH key 를 클릭하고 깃허브 계정 비밀번호를 입력하면 추가가 완료된다.

  6. 테스트 해보면 잘 동작 한다.

    test

SSH로 코드커밋에 연결하기

코드커밋 연결용 SSH 키 생성

CodeCommit 에서 SSH 키를 사용 할 때는 다음 내용을 반드시 읽고 확인한다.

공개 키는 ssh-rsa 형식 또는 PEM 형식으로 인코딩되어야 합니다. 공개 키의 최소 비트 길이는 2048비트이고 최대 길이는 16384비트입니다. 이것은 업로드하는 파일의 크기와 별개입니다. 예를 들어 2048비트 키를 생성할 수 있으며 결과 PEM 파일의 길이는 1679바이트입니다. 공개 키를 다른 형식이나 크기로 제공하면 키 형식이 유효하지 않다는 오류 메시지가 표시됩니다.

$ ssh-keygen

# or

$ ssh-keygen -t rsa -b 4096

에이전트에 SSH 키 등록 및 복사

  • 깃허브에서 설명한 방식과 동일하게 진행한다.

IAM 콘솔에서 업로드

  1. IAM 콘솔에서 CodeCommit 접근에 사용하는 IAM 계정을 선택하고 보안자격 증명 탭으로 이동한다.

  2. SSH 퍼블릭 키 업로드 버튼을 클릭하고 복사한 키 값을 붙여 넣은 다음 업로드 한다.

  3. 업로드한 퍼블릭 키의 SSH 키 ID 를 복사해서 .ssh/config 에 다음과 같은 내용을 추가한다.

     Host git-codecommit.*.amazonaws.com
     User SSH 키 ID
     IdentityFile ~/.ssh/코드커밋 접속을 위해 생성한 SSH 키 
    

마무리

  • 깃허브와 코드커밋에서 요구하는 SSH 키의 형식이 다르다.
  • SSH 키를 생성하고 ssh-agent 서비스에 등록한 다음 퍼블릭 키값을 사용하려는 깃허브 계정과 코드커밋에 접속하려는 IAM 계정에 업로드 하고 .ssh/config 에 필요한 설정을 추가 한다.
  • 개인용 GitHub 계정과 회사용 CodeCommit 계정을 SSH 키로 연결 되도록 설정하니 config 는 다음과 모습이 되었다.


Reference