본문 바로가기

카테고리 없음

[Jenkins] 서버에 자동 배포하기 위한 Jenkins Credentials SSH 키 등록하기

 

 

 

 

1. Jenkins의 credintials이란?

  • 사용자, 스크립트, 또는 jenkins 자체가 외부 시스템과 안전하게 상호 작용할 수 있도록 인증 정보를 저장하고 관리하는 방법을 의미
  • Jenkins의 인증 정보 관리 시스템은 다양한 인증 정보를 지원
    • 사용자 이름과 비밀번호: 가장 일반적인 인증 방법 중 하나로, 외부 시스템에 로그인할 때 필요
    • 비밀 텍스트: API 토큰이나 애플리케이션 비밀과 같이 단일 비밀 정보를 저장하는 데 사용
    • 인증서: SSL/TLS 통신을 위해 사용되는 인증서 파일 저장
    • SSH 키: Jenkins가 원격 시스템에 SSH를 통해 접근할 때 사용되는 개인 키와 공개 키 관리
  • Jenkins에서 SSH 키를 Credentials에 등록하여 서버에 자동 배포를 구현할 수 있음

 

 

2. Jenkins에서 SSH 키를 Credentails로 등록하기

 

1) SSH Private Key 생성 또는 준비

배포 대상 서버에 접근할 수 있는 SSH 키 준비하기

# jenkins가 구동되는 서버에서 위치 이동하여 키 확인하기

# 디렉토리 이동
cd .ssh/

# 키 생성
ssh-keygen -t rsa

# 키 생성 예시
ssh-keygen -t rsa -b 4096 -C "mykey"
  1. ssh-keygen: SSH 프로토콜을 사용하는 데 필요한 공개키와 개인키를 생성하는 데 사용되는 프로그램
  2. -t rsa: 이 옵션은 키의 유형 지정. rsa는 현재 가장 널리 사용되는 공개키 암호화 알고리즘 중 하나이며 RSA는 'Rivest, Shamir, and Adleman'의 머리글자를 딴 것
  3. -b 4096: 이 옵션은 키의 비트 수 지정. 4096은 키의 길이를 비트 단위로 나타내며, 보안성을 높이기 위해 사용됨. 기본적으로 많은 시스템에서는 2048 비트가 사용되지만, 더 높은 보안성을 원할 경우 4096 비트를 사용할 수 있음.
  4. -C "mykey": 이 옵션은 키에 주석을 추가하는 데 사용됨. 주석은 키를 식별하는 데 도움이 되며, 보통 키를 사용하는 사용자의 이메일 주소를 넣기도 함. 여기서 "mykey"는 예시로 사용된 것이며, 실제 사용 시에는 더 구체적이고 의미 있는 설명을 추가하는 것이 좋음

 

 

키 확인하기! 키는 아래에서 jenkins에는 개인키, 배포 서버에는 공개키 저장에 쓰임

# jenkins 서버 개인키 확인
cat id_rsa


# jenkins 서버 공개키 확인
cat id_rsa.pub

 

 

 

 

 

2) Jenkins Credentials 설정

Jenkins 홈 -> Jenkins 관리 -> Credentials

 

(global) 도메인 또는 특정 도메인 클릭

 

오른쪽 상단에 Add Credentials 클릭

Credentails 정보 입력하기

  • "Kind"에서 "SSH Username with private key" 선택
  • "Username"에는 SSH 접속에 사용할 서버의 사용자 이름 입력
  • "Private Key"에서 "Enter directly"를 선택하고 위에서 확인했던 젠킨스 개인키 내용 입력( "From a file on Jenkins master"를 선택하여 Jenkins 서버에 저장된 파일로부터 키를 불러오는 방법도 있음)

 

 

 

 

3) Jenkins SSH 공개키 배포 서버에 등록하기

  • 배포 대상 서버에 Jenkins SSH 공개키를 등록하여 SSH 접속을 허용하는 것을 설정
  • 이를 통해 Jeknkins 서버가 해당 서버에 비밀번호 없이 안전하게 접속할 수 있음

 

1) 배포 대상 서버에 로그인(접속)

 

2) 사용자의 홈 디렉토리 내에 .ssh 디렉토리가 있는지 확인하고 없다면 생성

mkdir -p ~/.ssh
chmod 700 ~/.ssh

 

3) authorized_keys 파일에 Jenkins 공개키 추가하기

 

 

Jekins SSH 공개키 등록하기

 

 

4) 설정 확인하기

  • Jenkins 서버에서 설정한 SSH 키를 사용하여 비밀번호 없이 원격 서버에 접속하는 것이 제대로 작동하는지 확인하기 위해 SSH 명령어를 사용하여 원격으로 접속

 

ssh -i /path/to/private_key username@remote-server