Jenkins 서버로부터 SSH EC2 접속을 이용한 CD

haaaalin·2023년 11월 23일
post-thumbnail

앞서 본편의 글을 보고 오면 알겠지만, 현재 운영 서버와 같은 서버에 Jenkins를 설치한 상태이고, shell script 실행을 이용해 빌드를 진행하려던 상황이었다.

⛔️ Permission 문제..

shell script에 포함되어 있는 cd 명령어가 실행이 안된다. 같은 서버라 접속이 될 줄 알았지만, 해당 repository 폴더로 이동하는 명령어에서 Permission denied 오류가 발생했다.

jenkins에서 실행하는 명령어 모두 ec2-user 사용자로 로그인된 상태에서 실행되는 줄 알았지만, whoami 명령어를 통해 알아보니 jenkins가 사용자였다.

따라서 아래 명령어로 사용자를 바꾸려 시도했다.

sudo su - ec2-user

하지만 당연하게도 비밀번호가 필요하니 터미널로 입력 받거나, -S 옵션을 사용해 표준 입력을 받으라는 메시지가 출력됐다. ec2는 사실 password 기반의 authentication이 존재하지 않아, 따로 설정해줘야 하는데.. 사실 보안적으로 썩 좋지 않다는 판단을 했다. 그냥 ssh 개인키를 이용하자.

SSH Agent 플러그인 사용하기

그냥 Pipeline Script 작성을 위해 freestyle project가 아닌 pipeline project로 새로 item을 만들어, Pipeline Script를 작성했다.

Credential 등록

우리가 PC에서 EC2에 접속할 때의 방식을 이용해야 한다. ssh -i {pem key 이름}.pem ... 과 같은 명령어를 통해 pem키를 넣어 접속했는데, Jenkins에서도 마찬가지로 똑같은 방식으로 접속 가능하다.

Dashboard > Jenkins 관리 > Credentials > System에 들어가, Add credentials를 선택한다.

.pem 파일의 내용을 보는 방법은 local에 저장되어 있는 .pem 파일을 cat 명령어로 내용을 출력하면 된다. 해당 내용을 모두 복사해 내용에 넣어주자.

SSH Agent 플러그인 설치

정말 수많은 삽질 끝에.. 드디어 성공했다.

profile
한 걸음 한 걸음 쌓아가자😎

0개의 댓글