ETC

Github ssh 연동 with Jenkins

findmypiece 2021. 10. 14. 10:46
728x90

ssh 연동 자체는 매우 간단하다. 맥북 로컬을 기준으로 보면 터미널에서 ssh-keygen 으로 비밀키와 공개키를 생성하고 아래와 같이 Github 에 SSH keys 항목에 공개키를 등록해주면 된다.

 

이렇게 되면 로컬에서 Github 을 ssh 방식으로 접속을 시도할 때 자동으로 로컬 .ssh 디렉토리 하위에 생성된 비밀키가 ssh 통신에 사용되고 Github 에서는 이에 대응되는 공개키가 등록되어 있는 것이 확인되면 접속이 성공하는 방식이다.

 

결국 로컬 .ssh 하위에 생성된 비밀키가 우리가 생각하는 id/password 같은 인증정보가 되는 셈인데 이를 자동으로 셋팅해서 넘겨주니 id/password 입력 같은 과정이 필요없게 된다.

 

로컬이 아니라 Jenkins 같은 외부 서버 ssh 접속을 할 경우에도 기본적으로 Jenkins 서버에서 ssh-keygen 으로 비밀키와 공개키를 생성해서 공개키를 Github 에 등록해 놓으면 된다.

 

그런데 "Jenkins Github ssh 연동" 이라는 키워드로 구글링을 하다보면 전혀 다른 내용들이 많이 튀어 나온다. Github 에 공개키를 등록하긴 하는데 특정 repository 내부의 Settings 탭에서 Deploy keys 로 등록을 하라는 것이다.

 

물론 이렇게 해도 되지만 공개키를 SSH keys 에 등록하는 것과 Deploy keys 에 등록하는 게 대체 무슨 차이가 있는 것인지 궁금해진다. 이는 Github에 유저로써 접근하느냐 저장소로 직접 접근하느냐의 차이인데 SSH keys 에 등록할 경우 해당 유저가 권한이 있는 저장소에 모두 접근이 가능하지만 Deploy keys 에 등록할 경우 접근하려는 저장소마다 일일이 Deploy keys에 공개키를 등록해줘야 한다.

 

실무에서는 하나의 젠킨스에 부서에서 사용하는 모든 서버의 배포를 일괄적으로 관리하고 Github 여러 저장소에 접근이 가능해야 하기 때문에 Deploy keys 방식은 거의 사용되지 않는다. 오히려 부서에서 관리하는 저장소에 모두 접근할 수 있는 Github 공용계정을 만든 뒤에 해당 계정 SSH keys 에 공개키를 등록하는 방식을 사용한다.

728x90