필자는 git 사용시 ssh키 인증을 사용중이다. 이번에 깃허브 자체 pages 기능 사용을 위해 gh-pages 패키지를 이용, 자동으로 배포를 진행하는 세팅을 해봤다.
/* package.json */
{
...
"scripts": {
...
"predeploy": "npm run build",
"deploy": "gh-pages -d build"
}
}
package.json 파일을 요런식으로 세팅해주면 CLI 명령어로 run npm deploy
입력시 알아서 빌드부터 깃허브 페이지 배포까지 자동으로 진행해준다.
문제는, 배포 진행중 발생한 오류이다.
Cloning into '...\citysquirrel.github.io\node_modules\.cache\gh-pages\git@github.com!Citysqugit@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
인증 문제로 해당 remote repo를 불러올 수가 없다는 것이다. 왜?
SSH키가 고장났나싶어 확인해봤지만 정상적으로 작동되고 있었다.
예상컨데 문제는 deploy 시의 인증이라고 본다. 해당 SSH키는 내 깃허브 계정과 연결되어있고, 내 로컬 git과 연결이 되어있는데.. 여기서 gh-pages 패키지는 어느 부분에도 교집합이 없다. deploy할 때의 인증을 따로 진행해주어야 한다는 불편함..!!
내가 생각한 원인이 맞는지는 잘 모르겠다. 왜 이러는 것인지 확실하지 않다.
방법을 두 가지 모색해봤다.
어쨌든 인증키가 연결된 계정이 있으니 해당 계정과 연결해주는 다리를 놓는다.
remote 레포를 ssh 방식이 아닌 https 주소 방식으로 연결해준다.
git remote set-url origin https://github.com/${깃허브 아이디}/${레포지토리 이름}.git
git remote -v
로 확인했을 때 다음처럼 출력되면 잘 적용된 것이다.
origin https://github.com/${깃허브 아이디}/${레포지토리 이름}.git (fetch)
origin https://github.com/${깃허브 아이디}/${레포지토리 이름}.git (push)
그러면 정상적으로 작동할 것이다. 물론 이 방식을 이용하려면 git config 세팅에 본인 깃허브 아이디와 비밀번호가 설정되어 있어야할 것이다.
깃 레포지토리 웹 설정에서 deploy key를 설정해준다.
설정하고자 하는 깃 레포에가서 settings를 클릭해보면 다음 화면을 마주할 수 있다.
왼쪽 메뉴에서 Security - Deploy Keys
로 들어가보자.
오른쪽 위에 있는 Add deploy key
버튼을 눌러 들어간 후 생성한 SSH 키를 등록해주면 잘 작동할 것이라고 생각한다(아직 해보진 않아서 확신은 못하겠다. 이후에 검증하는 시간을 가져보자).
만약 기존 git 계정에 사용한 ssh키로는 작동하지 않는다면 새로 SSH키를 만들어야하는 번거로움도 있을 수 있다.