Linux

Jenkins - Git 연동하기 (Public Key 공개키 인증)

Ryan's Tech Note 2023. 2. 18. 22:23

Jenkins을 처음 세팅하고 Git 을 연동하려는데, 아무리 ssh id, pass 를 맞게 입력하고 git 연동 url 을 맞게 입력해도 계속 알수없는 에러가 난다. Jenkins 버그인지는 모르겠는데, 이 상황을 타개하기 위해 id/pass 인증을 하지 않고, public key 인증을 하여 해결하였다. 그럼 Jenkins 에서 git 연동시 public key 인증하는 방법을 알아보자. 어렵지 않다 쫄지말자. 그냥 보고 따라하면 된다.

 

일단, git 실행 정보를 정확하게 입력하자. 원하는 Git 경로가 있다면 그것으로 해도 된다.

 

먼저 관련된 개념을 간단하게 정리하겠다. 관련된 계정은 총 2가지다. (1) Jenkins 계정 (2) Git 계정. Jenkins 프로세스는 jenkins 계정 권한으로 실행되는 것이고, jenkins 계정으로 로그인 된 프로그램이 git 계정으로 ssh 로그인 하여 소스를 가져오는 것이다. 그런데, Jenkins 프로그램이 git 에 ssh 로그인할때 git의 id/pass 를 치는대신, jenkins 계정 자신의 공개키를 사전에 git 계정에 등록해 놓으면 마치 회사에 자기 지문을 저장해 놓고 그 지문값을 가진 사람은 통과되는 것처럼 통과된다. 공개키=전자지문 이라고 생각하면 된다. 이것만 이해하면 이제부턴 쉽다. 따라해보자.

 

root 계정으로 들어가서 계정 변환을 한다. jenkins 계정은 로그인 할 수 없는 계정이기 때문이다.

su - root

 

그다음, jenkins 의 공개키를 만들어보자. Jenkins 서버로 가서

sudo -u jenkins /bin/bash
ssh-keygen

이어 나오는 질문에는 그냥 계속 엔터를 치며 통과한다.

bash-5.1$ cd /var/lib/jenkins/.ssh
bash-5.1$ ls -al
합계 20
drwx------.  2 jenkins jenkins   80  2월 18 21:29 .
drwxr-xr-x. 14 jenkins jenkins 4096  2월 18 21:37 ..
-rw-------.  1 jenkins jenkins 2602  2월 18 18:59 id_rsa
-rw-r--r--.  1 jenkins jenkins  569  2월 18 18:59 id_rsa.pub
-rw-------.  1 jenkins jenkins 1054  2월 18 20:47 known_hosts
-rw-r--r--.  1 jenkins jenkins   99  2월 18 20:45 known_hosts.old

cat /var/lib/jenkins/.ssh/id_rsa.pub

위의 id_rsa.pub 파일이 생성되었을 것이다.

cat 한 이후 출력되는 공개키를 복사해서 메모장에 copy & paste 해 놓는다.

cat id_rsa.pub

ssh-rsa AAAAB3NzaC1...(생략)...Hxq2tahpf0jLLbXqBeXc= git@webcom

 

그럼 이 공개키를 git 에 등록해보자. Git 서버로 가서

# su - git
$ cd .ssh
$ ls -al
합계 12
drwx------. 2 git git   61  2월 18 21:59 .
drwx------. 6 git git  179  2월 18 21:59 ..
-rw-r--r--. 1 git git  569  2월 18 21:30 authorized_keys
-rw-------. 1 git git 2590  2월 18 09:59 id_rsa
-rw-r--r--. 1 git git  565  2월 18 09:59 id_rsa.pub

$ vi authorized_keys
(붙여넣고 저장)

 

이제 git 계정에 jenkins 계정의 공개키가 등록되었으므로, 앞으로 jenkins 계정으로 git 계정에 ssh 로그인 할 때는 id/pass 없이도 로그인이 될 것이다. Jenkins 웹 콘솔에서 id/pass 는 비움으로 해 놓는다.

 

저장하고 빌드를 실행한다.

Git 프로젝트가 Checkout 되었다.

 

 

도움이 되었다면 공감과 댓글 한번 부탁드립니다.