About authentication to Github

다음과 같은 메일이 왔다.

Hi @euikook,

You recently used a password to access the repository at euikook/wiki.notes with git using git/2.30.2.

Basic authentication using a password to Git is deprecated and will soon no longer work. Visit https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information around suggested workarounds and removal dates.

Thanks, The GitHub Team

Github Blog Token: Token authentication requirements for Git operations

보안 강화를 위하여 2021년 08월 13일 부터 Git 작업을 위한 인증 시 암호를 통한 인증을 지웒 하지 않는다고 한다. 2021년 08월 13일 이후에는 Git 작업을 위해서는 토큰 기반 인증을 사용하거나 SSH 키를 통한 인증을 사용해야 한다.

지금도 2 단계 인증을 활성화 한 사람은 암호를 통한 인증을 사용할 수 없다.

About authentication to Github

Github에 인증하는 방법은 다음과 같다.

  • (2 단계 인증을 통한) username, password
  • Personal access token
  • SSH Key

Github.com에 수정사항을 기여(Contribution)하지 않는 다면 크게 상관 없다.

2 단계 인증을 사용하고 있다면 지금도 계정 암호가 아니라 Personal Access Token을 통해서 인증 해야 하기 때문에 상관이 없다.

개인 PC 에서는 SSH Key를 등록하면 되니 상관 없지만 이 Personal Access Token이 왜우지 못할만큼 엄청나게 길기때문에 개인 PC가 아닌 외부에서 수정사항을 Push 하려면 일일이 github.com에 접속해서 Personal Access Token을 복사하여 사용해야 한다. 보안에는 매우 좋겠지만 여간 불편한게 아니다.

바뀌는점

Github.com repository는 HTTPS와 SSH를 통해 액세스 할 수 있다.

HTTPS 사용자

HTTPS를 이용 하여 저장소에 접근하는 경우 Personal Access Token을 이용하여 접근 하면 된다.

다른 대안은 없다.

SSH를 통해 액세스 방법으로 변경하자.

저장소 URL을 확인한다.

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

set-url 명령을 이용하여 저장소 URL을 HTTPS에서 SSH로 변경하자.

git set-url origin git@github.com:USERNAME/REPOSITORY.git

잘 변경되었는지 확인하자.

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

SSH 사용자

변경사항 없이 계속 사용가능하다.

아래와 같이 브라운아웃(Brownout) 이 예정되어있다.

소프트웨어 공학에서 브라운아웃(Brownout)은 응용 프로그램의 특정 기능을 비활성화 하는 기법이다. Wikipedia: Brownout (software engineering)

아래와 같이 예고된 시간에는 Account Password를 통한 인증이 비활성화 되기 때문에 Account Password를 통한 Git 작업을 할 수 없다.

당황하지 말고 SSH를 통한 접근하던지 Personal Access Token을 발급받아 접속하도록 하자.

2021년 06월 30일

  • 07:00 UTC - 10:00 UTC
  • 16:00 UTC - 19:00 UTC

2021년 07월 28일

  • 07:00 UTC - 10:00 UTC
  • 16:00 UTC - 19:00 UTC

한국 시간으로 변경하면 다음과 같다.

2021년 06월 30일

  • 16:00 KST - 19:00 KST

2021년 07월 01일

  • 01:00 KST - 04:00 KST

2021년 07월 28일

  • 16:00 KST - 19:00 KST

2021년 07월 29일

  • 01:00 KST - 04:00 KST