젠킨스(Jenkins)에서 SSH를 통해 원격 서버에 배포하는 방법은 무엇인가요?
_____A1: 대표적으로 "Publish Over SSH" 플러그인을 사용합니다. 이 플러그인은 SSH를 통해 파일 복사 및 명령어 실행을 자동화할 수 있습니다.
Q2: "Publish Over SSH" 플러그인을 설치하는 방법은?
A2:
1. 젠킨스 관리 > 플러그인 관리 > 설치 가능 탭에서 "Publish Over SSH"를 검색합니다.
2. 플러그인을 선택 후 설치하고 젠킨스를 재시작합니다.
Q3: SSH 연결 설정은 어떻게 하나요?
A3:
1. 젠킨스 관리 > 시스템 설정 > Publish Over SSH 섹션으로 이동합니다.
2. 원격 서버 호스트명(IP), 사용자명, 포트(기본 22), SSH 키 또는 비밀번호를 설정합니다.
- SSH 키를 사용하는 경우 키를 Jenkins 서버에 올리고 경로를 지정해야 합니다.
3. 설정 저장 후 플러그인 테스트 기능으로 연결 상태를 확인합니다.
Q4: 젠킨스 파이프라인에서 SSH 배포를 어떻게 사용하나요?
A4: 파이프라인에서는 공식 플러그인 step 대신 ssh-agent, ssh commands를 직접 사용하거나, Publish Over SSH 플러그인의 대표적인 명령어는 freestyle job에서 사용합니다. 파이프라인에서 SSH 배포를 할 때는 아래처럼 `sh` 명령어 내에 ssh/scp 명령어를 직접 입력하는 방법이 많습니다.
예시:
```groovy
pipeline {
agent any
stages {
stage('Deploy') {
steps {
sshagent(['jenkins-ssh-credential-id']) {
sh 'scp -o StrictHostKeyChecking=no target/myapp.war user@remote-server:/path/to/deploy/'
sh 'ssh -o StrictHostKeyChecking=no user@remote-server systemctl restart myapp.service'
}
}
}
}
}
```
Q5: SSH 키 기반 인증은 어떻게 준비하나요?
1. 로컬 젠킨스 서버에서 `ssh-keygen`으로 키 쌍 생성(또는 기존 키 사용).
2. 원격 서버의 `~/.ssh/authorized_keys`에 공개키 추가.
3. 젠킨스 Credential에 사설키(private key)를 등록한 후 파이프라인에 관련 Credential ID를 지정합니다.
Q6: 배포 과정 중 권한 문제나 접속 거부 오류가 발생하면 어떻게 해결하나요?
A6:
- SSH 공개키가 원격 서버에 정확히 등록되어 있는지 확인합니다.
- 원격 서버의 SSH 데몬 설정(sshd_config)에서 접속 허용 여부를 체크합니다.
- 방화벽 포트(기본 22) 개방 여부를 확인합니다.
- 젠킨스에서 사용하는 유저가 SSH 키를 읽을 권한이 있는지 확인합니다.
Q7: SSH 연결 시 호스트 키 확인 문제를 무시하는 방법은?
A7: ssh 명령어에 `-o StrictHostKeyChecking=no` 옵션을 넣으면 처음 접속 시 호스트 키 확인을 생략할 수 있습니다. 다만 보안상 주의가 필요합니다.
Q8: "Publish Over SSH" 플러그인을 사용한 Freestyle Job 배포 설정 기본 절차는?
A8:
1. "Publish over SSH" 설정에 원격 서버 정보 입력.
2. Freestyle Job 구성 내 "Post-build Actions"에서 "Send files or execute commands over SSH" 선택.
3. 전송할 파일 경로와 전송 후 실행할 명령어를 입력.
4. 빌드 후 원격 서버에 파일 복사 및 배포 스크립트 실행 가능.
Q9: 여러 대의 원격 서버에 동시에 배포하려면?
A9:
- Publish over SSH 플러그인에서 여러 SSH 사이트를 설정하고 각각에 배포 가능.
- 또는 파이프라인에서 각 서버에 대해 별도 ssh/scp 단계를 둡니다.
Q10: 보안 때문에 SSH 비밀번호 대신 키 인증을 권장하는 이유는?
A10:
- 키 인증은 비밀번호 노출 위험이 적고 자동화에 적합합니다.
- 또한 졸업 시 키 만료 및 롤백 관리가 용이합니다.
- 비밀번호는 젠킨스 로그나 환경 변수에 노출 가능성이 있습니다.
---
위 내용을 적용하면 젠킨스에서 SSH를 통한 원격 배포를 안정적이고 효율적으로 구축할 수 있습니다.
이 과정에서는 Jenkins와 SSH 플러그인을 사용하여 원격 서버에 코드나 애플리케이션을 배포하는 과정을 설명합니다.
1. 준비 사항 - Jenkins 설치 : Jenkins가 설치되고 실행 중이어야 합니다.
- 원격 서버 준비 : SSH를 통해 접근 가능한 원격 서버가 준비되어 있어야 합니다.
- SSH 키 생성 : Jenkins 서버가 원격 서버에 접근할 수 있도록 SSH 키를 생성하고 설정해야 합니다.
2. SSH 키 생성 및 설정 1. Jenkins 서버에서 SSH 키 생성: ```bash ssh-keygen -t rsa -b 4096 ``` - 기본적으로 `~/.ssh/id_rsa` 경로에 저장되며, 다른 경로에 저장할 수도 있습니다.
2. 생성된 공개 키(`id_rsa.pub`)의 내용을 복사하여 원격 서버의 `~/.ssh/authorized_keys` 파일에 추가합니다.
(원격 서버에서 `nano ~/.ssh/authorized_keys`로 파일을 열고 붙여 넣기)
3. 원격 서버의 SSH 설정이 올바르게 구성되었는지 확인하고 SSH로 접근 가능한지 테스트합니다: ```bash ssh 사용자명@원격서버_IP ```
3. Jenkins SSH 플러그인 설치 1. Jenkins 대시보드에서 Manage Jenkins -> Manage Plugins 로 이동합니다.
2. Available 탭에서 "SSH" 또는 "Publish Over SSH" 플러그인을 검색하여 설치합니다.
설치 후 Jenkins를 재시작해야 할 수 있습니다.
4. SSH 서버 설정 1. Jenkins 대시보드에서 Manage Jenkins -> Configure System 으로 이동합니다.
2. Publish over SSH 섹션으로 스크롤합니다.
3. Add 버튼을 클릭하여 새로운 SSH 서버를 추가합니다.
- Hostname : 원격 서버의 IP 주소 또는 도메인 - Username : 원격 서버의 사용자 이름 - Remote Directory : 배포할 디렉토리의 경로 - Use password authentication : 체크 해제 (SSH 키를 사용하므로) - Key : Jenkins 서버에서 생성한 개인 SSH 키를 입력하거나, SSH 키 파일을 지정합니다.
5. Jenkins 프로젝트 구성 1. 새 Jenkins 작업을 만들거나 기존 작업을 수정합니다.
2. Build 섹션에서 Add build step 을 클릭하고 Send files or execute commands over SSH 를 선택합니다.
3. 위에서 설정한 SSH 서버를 선택합니다.
4. Source files 필드에 배포할 파일 또는 디렉토리 경로를 입력합니다.
(예: `target/*.jar`)
5. Remove prefix 필드에서 원격 서버의 기준 디렉토리에서 제거할 접두사를 설정할 수 있습니다.
6. Exec command 필드에 원격 서버에서 실행할 명령을 입력합니다.
(예: `java -jar yourapp.jar`)
6. 배포 실행 1. 작업을 저장하고 대시보드에서 해당 작업을 선택 후 Build Now 버튼을 클릭합니다.
2. 콘솔 출력에서 원격 서버로의 파일 전송 및 명령 실행 결과를 확인할 수 있습니다.
7. 배포 검증 원격 서버에 SSH로 접속하여 배포가 제대로 이루어졌는지 확인합니다.
결론 위 과정을 통해 Jenkins를 이용해 SSH를 통해 원격 서버에 배포하는 설정을 완료할 수 있습니다.
이를 통해 자동화된 CI/CD 파이프라인의 일환으로 배포 프로세스를 효율적으로 관리할 수 있습니다.
작성자:
최지호 [비회원]
| 작성일자: 1년 전
2025-03-22 15:11:02
조회수: 203 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 203 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.