본문 바로가기
개발환경/git

GitHub “Key is already in use” 에러 방지: SSH public Key 2개 등록하기

by Kibua20 2021. 5. 27.

GitHub에 SSH Key를 등록해서 사용하면 패스워드 입력 없이 편리하게 인증을 받을 수 있습니다.  또한 GitHub와 AWS나 GCP Cloud와 연동하는 경우에도 SSH Key를 등록하여 인증을 합니다.  GitHub에 SSH Public Key를 등록할 때 “Key is already in use” of How to use 2 public key in github 에러 메시를 출력하면서 SSH Key 등록이 실패하는 경우가 있습니다. Git Hub에서 SSH Key의 중복 사용을 허용하지 않고 있습니다.  즉 하나의 SSH Key로 여러 계정의 인증 키로 등록하거나, 복수의 Repository Key에 등록하는 것을 허용하지 않습니다. 

 

 본 포스팅은  GitHub에 SSH Key를 2개 등록하기 위한 방법을 소개합니다. 

 

이전 글: 

[개발환경/git] - GitHub 아이디/패스워드 입력 없이 사용하는 방법

 

문제점 요약:

  • 에러 메시지:  Key is already in use” of How to use 2 public key in github
  • 발생원인: GitHub에서 SSH Key 중복 등록은 허용하지 않음

 

해결 방법: GitHub 계정 전용 SSH Key를 추가 생성하고 등록

  1. Git Hub 계정용 SSH Key 생성 (기존에 생성한 SSH Key는 이미 GitHub Repository에 등록되어 있다고 가정)
  2. SSH Key 생성 확인하고 Public Key를 Github에 등록
  3. SSH config 에 GitHub.com-{your_id} 반영 
  4. Git Clone 명령어 사용 시 Git URL에 계정 정보 추가 후 복사 

 

1. Git Hub용 SSH Key 생성

$ ssh-keygen명령어로 SSH Key 생성 시 인증키 생성 파일 이름을 지정합니다. 아래 예제에서 key 값의 파일 위치를 id_rsa_github로 지정합니다. Key을 생성이 완료되면 Private와 Public Key 파일(*.pub 확장자)이 각각 생성됩니다. 

 

$ ssh-keygen

$ Key 이름 지정 (이후 과정을 기본 값 사용)

GitHub 계정용 SSH Key 생성

 

2. SSH Key 생성 확인하고 Github에 등록

SSH Public Key 파일의 위치를 확인하고, 일반 Text editor를 열어서 Public Key값을 복사합니다. 복사한 Key 값을 계정의 Key 값으로 등록하거나, Repository의 Key 값으로 등록합니다. 

 

$ ls ~/.ssh/

$ cat ~/.ssh/id_rsa_github.pub

 

GitHub에 로그인 상태에서 오른쪽 상단 메뉴에서 계정 정보를 확인하고 Setting 메뉴를 진입합니다. Setting 메뉴 하단의  SSH and GPG Key등록 메뉴에서 New SSH Key 메뉴를 선택해서 복사한 Key값을 저장합니다. 

GitHub에서 SSH Key등록

 

3. SSH config에 GitHub.com-{your_id} 반영

GitHub에 SSH 연결 시 IndentifyFile 옵션을 사용해서 GitHub용 Key 파일로 지정합니다. 

 

$ vi ~/.ssh/config

 

Host 주소를 github.com-{your_id} 로 설정하고, Host Name은 github.com, User는 git을 설정, IdentiFile은 GitHub용으로 생성한 SSH Key 파일로 지정합니다. 

 

Host github.com-kibua20
  HostName github.com​
  User git​
  IdentityFile ~/.ssh/id_rsa_github

 

4. Git clone 사용 시 URL에 계정 정보 추가 후 복사

Git clone 명령어를 사용해서 Git을 로컬에 복사하는 과정입니다. GitHub의 Repository에서 Clone 명령어에서 "SSH"를 선택하면 clone 할 URL을 표시해줍니다.  Git Repository URL을  git@github.com-{your_id}:{your_id}/{repo_name}.git 와 같이 입력합니다.  

 

  • GitHub에서 복사한 URL: git@github.com:{your_id}/{repo_name}.git
  • 수정해야 하는 URL:  git@github.com-{your_id}:{your_id}/{repo_name}.git  
  • 수정 예:  git@github.com-kibua20:kibua20/test.git

 

관련 글: 

[개발환경/git] - git 사용하기 #1 (부제: GitHub)

[SW 개발/Data 분석 (RDB, NoSQL, Dataframe)] - MariaDB 또는 MySQL에서 지원하는 Built-in 함수 설명 및 예제

[개발환경/Tips] - rclone을 활용하여 Microsoft OneDrive를 네트위크 드라이브로 마운트하는 방법

[SW 개발/Python] - Python: xmltodict를 활용하여 XML를 JSON으로 변환하는 방법

[SW 개발/REST API] - 공공 데이터 Open API 사용법: 코로나 확진자 현황 API (sample code)

[SW 개발/Python] - MobaXterm (Cygwin)에서 Python 및 PIP 설치

[개발환경/Web Server] - Website 전체 백업 방법: HTTrack (티스토리 백업에 활용)

[개발환경/git] - GitHub 아이디/패스워드 입력 없이 사용하는 방법

[SW 개발/REST API] - JWT(JSON Web Token) Encoding 방법 (Python sample code)




댓글