AWS EC2 계정 암호설정하기 / Jenkins SSH를 이용해서 배포해보기

Dahun Yoo·2021년 1월 2일
0

AWS EC2 이것저것

목록 보기
6/9
post-thumbnail

Jenkins를 설치한 EC2 instance의 설정이 거의 다 끝나갑니다.

Jenkins가 설치되어있는 instance이외에도 다른 EC2 Instance를 생성합니다. 이 instance는 실제로 application의 서버를 올려서 구동할 것 입니다. (배포 대상 서버)
단지 SSH를 이용해서 jenkins가 설치된 A instance로 부터 배포 대상인 B instance로 빌드된 아이템을 전송하기에만 끝나는 것이 아니라, 직접 SSH 이용해서 접속하여 커맨드의 수행도 진행하여야합니다.
이 때, SSH로 접속하기 위해서는 key파일을 가지고 있어야하는데, 이 key파일없이 비밀번호만으로도 원격접속이 가능하게끔 설정을 해주겠습니다.


Password setting

일단 배포 대상 서버인 B instance에 접속하여서, root관리자로 계정전환을 합니다.
sudo su -

이후 아래의 커맨드를 이용하여 ec2-user 계정에 패스워드를 설정해줍니다.
passwd ec2-user

이렇게 패스워드를 설정하였으나, 이 외에도 다른 것을 설정해주어야합니다. EC2는 기본적으로 패스워드를 통해 접속하는 접근을 모두 거절하는 설정이기 때문에, 이것을 변경해주어야합니다.

SSH Password Authentication

root관리자인 상태에서, 아래 경로로 이동합니다.
cd /etc/ssh/

여기서 아래 커맨드를 이용하여 SSH환경설정 파일을 열어줍니다.
vim sshd_config


그럼 파일이 열리게 되는데, PasswordAuthentication 설정값을 찾아줍니다.
기본이 no로 되어있을텐데, 이 줄을 코멘트 처리하시고, yes가 기재되어있는 줄을 코멘트 처리해주세요.
만일 yes옵션이 기재되어있지 않다면, 직접 기재해주시면됩니다.
이후 :wq 로 저장종료합니다.
다음, 아래 커맨드를 실행하여 옵션을 적용합니다.
service sshd reload

Jenkins Publish Over SSH 설정하기

Manage jenkins > System configuration(시스템 설정) 으로 이동하여, Publish over SSH의 설정을 해줍니다.


배포대상 서버의 ip와 로그인하고자하는 username을 지정해줍니다. 여기서는 username은 ec2-user 로 지정해주면 됩니다.
이후, 고급 옵션을 선택해서 Use password authentication, or use a different key 를 선택하고, 위에서 설정한 ec2-user의 패스워드를 입력합니다.

설정이 끝나고, Test configuration 을 실행하여 성공하는 것을 확인합니다.

Build item and Transfer build complete file

jenkins에서 새로운 아이템을 등록하여, 어떠한 소스코드를 빌드를 한다고 해봅시다.
그 후에, 배포 서버로 빌드된 아이템을 보내기 위해서 어떻게하면 되는지 설정합니다.

post build action(빌드 후 액션)에서, Send build artifacts over SSH 를 선택합니다.

아이템이 빌드완료가 되면, jenkins 프로젝트 디렉토리 내에 어디 생기는지 확인을 해야합니다. 그러므로 일단 post build action을 설정하기 전에 한 번 jenkins 아이템을 실행시키고, 실제로 어디에 생성되는지 확인해야합니다.
생성된 폴더와 파일의 계층을 Source files 에 기재해줍니다.
여기서 다시 파일이름들을 삭제해줄 필요가 있을 수 있습니다.
SSH 전송은, 전송하고자 하는 위치에 폴더가 없다면, 똑같이 생성합니다.
저는 생성을 원하지 않으므로 Remove profix에 파일경로를 기재합니다. 이것으로 빌드 아이템만 전송되게 됩니다.


Remote directory 는 아이템이 실제로 전송될 경로를 의미합니다. 저는 . 을 지정하였으므로, ec2-user의 home디렉토리에 전송되게 될 것 입니다. 특정 폴더를 지정해야한다면, 지정해주면 됩니다.


이후 실행하고 성공하는지 확인합니다.

SUCCESS 로 끝났습니다.
실제 배포 서버(B instance) 로 접속해서 해당 파일이 원하는 경로에 존재하는지도 확인하면 됩니다.

profile
QA Engineer

0개의 댓글