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"
- ssh-keygen: SSH 프로토콜을 사용하는 데 필요한 공개키와 개인키를 생성하는 데 사용되는 프로그램
- -t rsa: 이 옵션은 키의 유형 지정. rsa는 현재 가장 널리 사용되는 공개키 암호화 알고리즘 중 하나이며 RSA는 'Rivest, Shamir, and Adleman'의 머리글자를 딴 것
- -b 4096: 이 옵션은 키의 비트 수 지정. 4096은 키의 길이를 비트 단위로 나타내며, 보안성을 높이기 위해 사용됨. 기본적으로 많은 시스템에서는 2048 비트가 사용되지만, 더 높은 보안성을 원할 경우 4096 비트를 사용할 수 있음.
- -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