[Jenkins] ssh key 를 사용하여 원격 서버에 배포

Posted by 김성철

Jenkins - ssh key를 사용하여 원격 서버에 배포

SSH란

서버에 접속할 때 비밀번호 대신 key를 제출하는 방식  
비밀번호보다 높은 보안  
로그인 없이 자동으로 서버에 접속하여 배포 가능  

작동 방식

키를 생성하면 공개키(id_sa_pub)와 비공개키(id_rsa)가 만들어진다.  
공개키는 원격서버에 비공개키는 클라이언트에 위치시킨다.  
로그인 할때 가지고 있는 비공개키를 서버에 전송한다.  
이 과장이 비밀번호를 입력하는 과정을 대신한다.  

참고링크

https://ktaes.tistory.com/100  

작업 순서

※ 폴더 안에 내용 확인은 ll 명령어가 아닌 ls -al로 진행  
  
1. Jenkins 서버 - Jenkins 계정으로 로그인 후 RSA키 생성 명령어 입력  
	su - jenkins  
	ssh-keygen -t rsa  
  
2. Jenkins 서버 - 키 생성 확인  
	jenkins 홈 디렉토리 확인  
		cat /etc/passwd | grep jenkins  
  
	jenkins 홈 디렉토리의 .ssh 경로로 이동  
		cd /var/lib/jenkins/.ssh  
  
	파일 생성 확인  
		ls -al  
		id_rsa_pub  
		id_rsa  
  
2. Jenkins 관리 - Plugin Manager - 설치 가능에서 SSH plugin 을 설치한다.  
  
3. Jenkins 관리 - Manage Credential 에서 Add Credential 클릭  
  
	Kind : SSH Username with private key  
	ID : 중복되지 않는 인증 ID - 해당 ID 값으로 pipline에서 인증 정보를 사용  
	username : 생략  
	private key : ssh-keygen 으로 생성한 private key 내용 (ex: jenkins_rsa)  
				  cat jenkins_rsa 명령어로 출력되는 내용  
	passphrase : ssh-keygen으로 인증키 생성시 입력한 password  
  
4. Jenkins 관리 - 시스템 설정 - SSH remote hosts 단락으로 이동 후 추가버튼 클릭하여 아래의 화면의 내용 채우기  
	Hostname : 접속할 서버의 IP  
	Port : 접속할 서버의 포트 (기본 22)  
	Credentials : 3번 항목에서 생성한 Credential 선택  
  
5. 배포할 서버 - tomcat 계정의 Home 디렉토리 확인  
	cat /etc/passwd | grep tomcat  
  
6. 배포할 서버 - tomcat 계정의 home 디렉토리에 authroized_keys 파일 생성  
  
	cd /home/tomcat/.ssh			//경로 이동 - 없을경우 mkdir 로 생성 후 소유자와 그룹을 사용하려는 계정으로 변경  
	vi authroized_keys				//파일 생성  
  
7. 배포할 서버 - authroized_keys 파일에 Jenkins 서버에서 생성한 id_ras.pub 파일의 내용을 붙여넣기 후 저장  
  
8. 배포할 서버 - authroized_keys 파일의 권한은 600 , 소유자는 로그인 할 계정 (tomcat)  
	chmod 600 authroized_keys  
  
9. Jenkins 관리 - 시스템설정 - SSH remote Hosts 에서 설정한 내용으로가 Check connection 클릭하여 접속 확인  
  
10. 접속 확인이 완료되면 Jenkins job 생성  
	-> New Item  
	-> Freestyle project  
  
11. Jenkins job 설정  
	11-1. Build 부분에서 "Add build step" 선택 후 "Execute shell script on remote host using ssh" 클릭  
  
	11-2. SSH site 는 4번 항목에서 생성한 host 의 정보 선택  
		ex) 계정명@IP  
			tomcat@192.168.0.111  
  
	11-3. 바로 하단의 Command 부분에 실행할 스크립트 작성