Github ssh 키 등록 후 permission denied?

Soheon Lee·2021년 3월 21일
0
post-thumbnail

먼저, ssh 가 낯설고 궁금한다면 아래의 글을 한 번 참고하고 시작하기 👍

ssh 설명 블로그

github에 조금 더 안전한 방식으로 계정을 관리하는 방법으로 SSH를 택하기로 했다면, 우리는 github my_settings > SSH and GPG keys 탭에서 아래 로고가 알려주는 란에서 SSH key를 등록한다.

등록하는 절차는 매우 간단한데, 여기서부터 문제가 발생한다. 평소에도 잘 사용하던 repository에 git push를 시도해보자

Username for 'https://github.com':
Password for 'https://soheon-lee@github.com'
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/...

아마 거의 모든 레포지토리에서 유저 정보를 다시 한 번 확인하는 과정이 진행되며, 기존 username과 password를 아무리 잘 입력한다고 해도, 제대로된 인증 과정이 거쳐지지 않는다. 분명히 바르게 입력해도 진행되지 않는다. 원래 그렇다.

ssh로 인증하기로 한 이상, 더이상 https로 clone 받은 repository에 기존의 방식으로는 접근할 수 없다.

처음 레포지토리를 클론 받거나, git remote를 연결할 때를 다시 떠올려 보면 우리는 https로 접근 가능하도록 지정해두었을 확률이 높다.

따라서, https로 접근하기로 지정한 레포지토리에는, ssh 키를 등록하고 ssh를 이용기로한 이상 더이상 접근할 수가 없게 되는 것이다.
이 때, 두가지 해결 방법이 있다.

1. ssh 방법으로 다시 repository clone 받기

다시 클론 받으면 된다. 그러나 push를 하기 위한 commit들이 이미 있는 상태에서는, 이 방법이 그렇게 좋은 방법이라고는 할 수 없다.

2. 검색하기 : how to change git config from https to ssh

가장 먼저 나오는 document는 github 공식 document인데,
git remote의 url을 ssh 버전으로 변경해주면 된다.
$ git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
현재 url의 형태는 아래와 같을 것이다.

git remote -v
> https://github.com/USERNAME/REPOSITORY.git

이를 위 명령어를 이용하여 변경해준다. 변경 후 다시 한 번 확인해본다면,

git remote -v
> origin git@github.com:USERNAME/REPOSITORY.git (fetch)
> origin git@github.com:USERNAME/REPOSITORY.git (push)

형태로 변경되어 있는 것을 확인할 수 있다.

여기서, git@github.com은 다른 개인적인 username이 아니라 literally git@github.com이라고 작성해야한다.

이렇게, git remote url을 https형식에서 ssh형식으로 변경해둔다면, 이제는 repository에 정상적으로 접근할 수 있고 아무 무리 없이 push 할 수 있다.

기존에 사용하고 있던 repository가 있던 상태에서 SSH key를 등록했다면, 지금까지 사용하고 있던 모든 repository에서 git remote set-url origin~~ 을 진행해주어야 한다.

참고

https://docs.github.com/en/github/using-git/changing-a-remotes-url

마치며

기존 통신 방식을 여러개 알고 있다고 생각하면서도, 막상 방식을 변경하고 나니 그와 연관되어있던 다른 기능들에 변경 사항을 적용할 때에는 또 새롭다. 이런 새로운 상황을 맞이하고, 또 검색해서 해결해나가면서, 부가적인 개념들을 복습하는 것을 게을리 하지말자.

profile
Hello, World

2개의 댓글

comment-user-thumbnail
2021년 7월 8일

git remote set-url origin https://github.com/USERNAME/REPOSITORY.git 이것을
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git 이것으로 바꿔야할 것 같습니다

1개의 답글