기타
[Jenkins] SSH 사용 - pipeline SSH Agent
royleej9
2022. 2. 1. 00:02
[Jenkins] SSH 사용 - pipeline SSH Agent
작업 순서
- SSH Agent 플러그인 설치
- SSH 인증서 생성
- jenkins에 ssh 인증 정보 등록
- pipeline에서 ssh 사용하기
- Bad configuration option 에러 발생시
1. SSH Agent 플러그인 설치
- Jenkins 관리 > 플러그인 관리 > 설치 가능 탭 선택 > SSH Agent 검색 후 설치
2. SSH 인증서 생성
- jenkins 설치 폴더 또는 docker 사용시 jenkins_home volume 위치로 이동
- docker 기반 jenkins 설치했을 경우 jenkins_home 위치에서 .ssh 폴더가 없는 경우 생성
- ex) jenkins_home: /home/asd/doc/jenkins
$ cd /home/asd/doc/jenkins
# jenkins_home 경로에 .ssh 폴더 생성
$ mkdir .ssh
$ cd .ssh
# ssh 인증서 생성
$ ssh-keygen -t rsa -b 4086
Generating public/private rsa key pair.
Enter file in which to save the key (/home/asd/.ssh/id_rsa): /home/asd/doc/jenkins/.ssh/jenkins_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/asd/doc/jenkins/.ssh/jenkins_rsa
Your public key has been saved in /home/asd/doc/jenkins/.ssh/jenkins_rsa.pub
The key fingerprint is:
# .ssh 폴더에 아래 2개의 파일이 생성된 것을 확인
# jenkins_rsa / jenkins_rsa.pub
- 공개키를 원격 호스트에 복사 (접속 대상)
$ ssh-copy-id -i /home/asd/doc/jenkins/.ssh/jenkins_rsa.pub x@192.168.0.7
- ssh 접속이 되는지 확인
$ ssh -i jenkins_rsa test@192.168.0.7
3. jenkins에 ssh 인증 정보 등록
https://www.jenkins.io/doc/book/using/using-credentials/
- jenkins 관리 > Manage Credentials
- Stores scoped to Jenkins > global > Add Credntials 선택
- ssh 정보 입력
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. pipeline에서 ssh 사용하기
- 새로운 Item 생성 > Pipeline 선택
- pipeline 항목에 테스트 내용 입력 후 저장
pipeline {
agent any
stages {
stage('test ssh') {
steps {
sshagent (credentials: ['jenkins-ssh']) {
sh """
ssh -o StrictHostKeyChecking=no ${TARGET_HOST} "pwd"
"""
}
}
}
stage('multiline ssh') {
steps {
sshagent (credentials: ['jenkins-ssh']) {
sh """
ssh -o StrictHostKeyChecking=no ${TARGET_HOST} '
rm -rf test
mkdir test
cd test
mkdir test2
cd test2
pwd
'
"""
}
}
}
}
environment {
TARGET_HOST = "test@192.168.0.7"
}
}
- 해당 Item의 Build Now를 클릭하여 실행하여 ssh 접속 후 경로가 출력 되는 것을 확인
5. Bad configuration option 에러 발생시
- 원인
- Host key checking : 터미널에서 ssh 접속시 아래와 같은 메세지가 출력되는 경우 jenkins에서 접속시 발생Are you sure you want to continue connecting (yes/no)?
- 해결
- Host key checking을 비활성화 하는 옵션을 한번 이상 사용
ssh -o StrictHostKeyChecking=no test@192.168.0.7 "pwd"