GitHub 저장소에 접근하려면 해당 저장소를 읽고 쓸 수 있는 권한을 가진 사용자임을 확인하기 위한 사용자 인증 과정이 필요합니다.
일반적으로 GitHub의 계정 정보인 ID와 암호(Password)를 제공하거나 서버에 등록된 SSH 키를 사용하여 인증이 가능하지만, 첫번째 암호 인증에서 계정의 암호 대신 개인 액세스 토큰(Personal Access Token)을 사용한 사용자 인증 방법이 있습니다.
이 방법은 주로 계정이 2FA (Two-Factor Authentication) 사용자 인증을 사용하는 경우에 활용됩니다. 2FA는 OTP, SMS 인증과 같은 추가 인증을 요구하는 방법을 뜻합니다.
GitHub 인증을 위한 개인 액세스 토큰 생성하기
액세스 토큰을 생성하기 위해서는 먼저 GitHub 웹 페이지에 접속한 후 계정 로그인이 필요합니다.
다음 링크에서 GitHub 로그인을 완료합니다.
만약 이 계정이 가입한지 얼마 안되었고 이메일 본인 인증이 완료되지 않았다면, 반드시 이메일 인증을 완료해야 합니다. (다음 링크 참고 : https://help.github.com/en/articles/verifying-your-email-address) 이미 이메일 인증을 하셨다면 넘어가셔도 좋습니다.
로그인이 완료되었다면 우측 상단 메뉴의 자신의 프로필을 클릭한 후 ‘Settings’ 메뉴를 클릭합니다.
Settings 페이지의 좌측 메뉴 하단 부분에 있는 ‘Developer Settings’ 메뉴를 클릭합니다.
이후 마찬가지로 좌측 메뉴에 있는 ‘Personal access tokens’ 메뉴를 클릭합니다.
Personal access tokens 페이지에 도달했다면, 우측에 있는 ‘Generate new token’ 버튼을 클릭합니다.
계정을 확인하는 로그인 창이 나타납니다. 다시 한 번 현재 계정의 암호를 입력해줍니다.
이제 특정 권한을 부여받을 수 있는 액세스 토큰을 생성해볼 수 있습니다.
토큰을 생성하기 위해서는 다음 입력란을 채워야 합니다.
- Note : 이 토큰에 대한 간단한 설명을 입력합니다.
- Select scopes : 이 토큰을 사용하여 인증할 때 부여할 권한을 지정합니다.
GitHub 저장소에 대한 접근 권한만 필요하다면, ‘repo’ 의 체크박스를 모두 체크해주시면 됩니다. (필요에 따라 하위 체크박스 중 일부를 빼셔도 됩니다.) 아무래도 모든 권한을 주는 것 보다는 정말 필요한 것들만 체크하는 것이 좋을 것 같습니다.
Generate token을 클릭하면 다음과 같이 액세스 토큰이 발급 될 것입니다. 복사하여 따로 저장해둡니다.
발급받은 액세스 토큰 사용하기
이제 생성한 토큰이 정상 동작하는지 확인해보도록 하겠습니다. git push
명령어를 사용하여 commit이 완료된 변경사항을 저장소 서버로 업로드해보겠습니다.
이전과 동일하게 계정의 ID와 암호를 묻게 되지만, 암호 대신에 방금 전에 생성한 토큰을 붙여넣어주시면 됩니다.
- Username : 사용자 계정 아이디
- Password : 발급받은 액세스 토큰
[user@localhost html]$ git push Username for 'https://github.com': [email protected] Password for 'https://[email protected]@github.com': Counting objects: 2289, done. Delta compression using up to 2 threads. Compressing objects: 100% (1567/1567), done. Writing objects: 100% (1577/1577), 38.45 MiB | 7.15 MiB/s, done. Total 1577 (delta 735), reused 0 (delta 0) remote: Resolving deltas: 100% (735/735), completed with 648 local objects. To https://github.com/example/example.git d44b958..0dd57ed master -> master
매번 이 토큰을 일일히 입력할 수는 없으므로 로그인 스크립트 등을 사용하여 토큰 인증을 빠르게 대체하는 방법을 사용해야 할 것입니다.
이렇게 액세스 토큰을 사용하여 정상적으로 저장소에 접근할 수 있습니다.
감사합니다 ㅠㅠㅠㅠ 깃….짜증나는데 안 쓸 수도 없고… 덕분에 오류 해결해서 무사히 푸쉬 했습니다!