프로그래밍/General

[Github] 원격서버에서 git 권한 없음 해결방법 (Permission denied (publickey))

Lou Park 2022. 5. 13. 23:50
Cloning into 'xxx'...
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

SSH를 통해 git을 이용하기 위해서는 올바른 공개키가 등록되어있어야한다. 보통 본인 컴퓨터에서 할때는 문제가 없지만, 원격지에서 pull을 땡기거나 할때 위와 같은 오류처럼 Repository 액세스 권한이 없다며 오류를 뱉게 된다.

 

현재 사용중인 SSH 파악하기

먼저, 원격지 서버에서 사용중인 SSH키가 어떤 것인지 알아야하고, 해당키가 github의 어느 Repository에 권한이있는 키인지 파악한다. -T는 "Test"의 T다.

ssh -T git@github.com

# 특정키 (ex. id_rsa)를 지정한다면 이렇게 하면된다. 
ssh -T -ai ~/.ssh/id_rsa git@github.com

Github 어딘가에 등록되어있다면, 아래처럼 알려줄 것이다.

예시는 sample-flask Repository 안에 넣어놓은 키이다.

Hi lx5475/sample-flask! You've successfully authenticated, 
but GitHub does not provide shell access.

등록해두지 않았다면, [Github Profile > SSH and GPG keys > New SSH Key]를 통해 공개키를 등록해두면 된다.

 

SSH Agent Forwarding

원격지 서버에 SSH를 통해 접속할때, SSH Agent 포워딩을 통해서 접속하면 내 컴퓨터에있는 인증정보를 가지고 원격지 서버에 들어가게 된다. 그렇지 않으면 서버의 공개키를 가지고 git Repository에 접근하게 되는데 만일 서버의 공개키가 github에 등록되어 있지 않을 경우 액세스 권한이 없다는 오류가 뜰것이다.

 

우선 로컬 컴퓨터에서 SSH Agent에 등록된 키가 있는지 확인한다.

ssh-add -L

 

등록된 키가 없다면 추가한다.

ssh-add -K <KeyFile>

 

원격지에 SSH Agent forwarding 하려면 아래처럼 접속하거나,

ssh -A user@host

 

ssh config를 사용할경우 ForwardAgent 옵션을 주면된다.

Host Server_Address
    ForwardAgent yes

Github에 등록되어있는 키를 SSH Agent 포워딩하면 인증정보를 그대로 사용할 수 있다.