먼저, 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를 아무리 잘 입력한다고 해도, 제대로된 인증 과정이 거쳐지지 않는다. 분명히 바르게 입력해도 진행되지 않는다. 원래 그렇다.
처음 레포지토리를 클론 받거나, git remote
를 연결할 때를 다시 떠올려 보면 우리는 https
로 접근 가능하도록 지정해두었을 확률이 높다.
따라서, https로 접근하기로 지정한 레포지토리에는, ssh 키를 등록하고 ssh를 이용기로한 이상 더이상 접근할 수가 없게 되는 것이다.
이 때, 두가지 해결 방법이 있다.
ssh
방법으로 다시 repository clone 받기다시 클론 받으면 된다. 그러나 push를 하기 위한 commit들이 이미 있는 상태에서는, 이 방법이 그렇게 좋은 방법이라고는 할 수 없다.
가장 먼저 나오는 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이 아니라 literallygit@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
기존 통신 방식을 여러개 알고 있다고 생각하면서도, 막상 방식을 변경하고 나니 그와 연관되어있던 다른 기능들에 변경 사항을 적용할 때에는 또 새롭다. 이런 새로운 상황을 맞이하고, 또 검색해서 해결해나가면서, 부가적인 개념들을 복습하는 것을 게을리 하지말자.
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git 이것을
git remote set-url origin git@github.com:USERNAME/REPOSITORY.git 이것으로 바꿔야할 것 같습니다