TobeSteady

[Git] Permission denied (publickey) 본문

GitHub

[Git] Permission denied (publickey)

NKUT 2023. 4. 1. 21:33

[원티드] 4월 원티드 프리 온보딩 챌린지 - docker 뽀개기.

사전미션 진행 중 발생한 에러 처리하기.

 

프리미션을 위한 레포지토리를 Clone하는 도중 아래와 같은 에러가 발생했다.

자료를 찾아보니, Git 서버는 4가지 방식의 프로토콜을 사용할 수 있었다.

(1.Local  2.HTTP  3.SSH  4. Git) 

 

평소에 Git Clone을 할 때는 HTTP 프로토콜을 사용하였으나,

이번처럼 SSH 프로토콜 방식으로 Clone을 시도하였을 때 에러가 발생했다.

이는 SSH 프로토콜을 위한 RSA 키가 없기 때문이다.


SSH 프로토콜
SSH 프로토콜(SSH protocol)은 Secure Shell의 약자로, 
네트워크 상에서 안전하게 원격 제어를 할 수 있는 프로토콜이다.

SSH는 다양한 용도로 사용되는데, 
대표적으로 "원격 서버 접속, 파일 전송, 포트 포워딩 등"이 있다. 
또한, SSH는 다양한 인증 방식을 제공하는데 "패스워드 인증, 공개키 인증"등이 있다.

 

RSA Key
RSA는 Rivest-Shamir-Adleman의 약자로, 공개키 암호화 방식 중 하나이다.
공개키(public key)와 개인키(private key)로 구성되어 있다.

SSH에서 RSA 키는 사용자 인증을 위해 사용된다.
SSH 클라이언트는 RSA 개인키를 가지고 있으며, SSH 서버는 RSA 공개키를 가지고 있다.
"클라이언트가 서버에 접속하면, RSA 개인키를 사용하여 서버에 인증을 요청하고,  서버는 RSA 공개키를 사용하여 클라이언트를 인증하는 과정을 거쳐 데이터를 안전하게 보호하고 전송한다."


SSH로 Git을 사용하기 위해서 RSA Key(SSH Key)를 생성하고 등록하기.

1. SSH Key 존재 확인하기.

cat ~/.ssh/id_rsa.pub

 

2. SSH Key 생성하기.

ssh-keygen

- passphrase는 Enter로 Pass하기.

  • ssh passphrase : SSH key pair를 사용하여 로그인할 때 보안을 강화하기 위해 사용되는 암호.
    • SSH key pair를 생성할 때는 비밀 키에 대한 passphrase를 설정하게 된다.
    • 이때 설정되는 passphrase는 사용자가 비밀 키를 사용하여 로그인할 때 입력해야하는 암호이다.
    • ssh passphrase를 설정하면 ssh key pair를 사용하여 로그인할 때 비밀키는 물론 passphrase 모두 필요하다.

- SSH Key 위치는 "C/Users/사용자이름/.ssh"폴더 아래에 위치한다.

  • 비공개 키(Private Key) : id_rsa 
  • 공개 키(Public Key) : id_rsa.pub

 

3. SSH Key 등록하기.

 

GitHub 계정에 새 SSH 키 추가 - GitHub Docs

GitHub.com에서 새(또는 기존) SSH 키를 사용하도록 계정을 구성하려면 계정에 키를 추가해야 합니다.

docs.github.com

3.1. 깃허브에서 New SSH Key 생성하기.

: Settings -> Access -> SSH and GPG keys -> [New SSH key]

우측 상단에 위치한 프로필 사진 클릭.
마지막에 위치한 "Settings"클릭하기.
Access 카테고리의 SSH and GPG keys클릭해서 New SSH key 선택하기.

3.2. "2."에서 생성했던 공개키 복사하기.

cat ~/.ssh/id_rsa.pub
# cat 명령어는 해당 파일의 내용을 보여준다.

 

3.3. 복사된 공개키 등록하기.

 

4. SSH으로 Clone하기.