SSH Jump Host 간단하게 설정하는 방법
회사에서 Jenkins를 관리하면서 마주한 문제가 있었습니다.
우선 서버 인프라가 망분리(dmz, priv) 구조로 구성되어 있고 zone간의 통신은 망연계를 통하여 이루어지고 있습니다.
Jenkins는 기본적으로 소스 배포 용도로 하나의 서버에서 기동이 되면서 모든 서버에 SSH/SFTP 접근이 필수로 요구되는 경우가 존재합니다.
그런데 Jenkins가 현재 구성상으로 Direct로 모든 서버에 SSH 접근이 이루어지지 못하는 상황이라 Bridge나 Proxy와 같은 설정이 필요로 하다고 생각했습니다.
아래에 간단하게 정리해놓은 Infra 구성도를 보면서 이어가도록 하겠습니다.
위는 현재 구성된 서버들을 간략하게 시각화 해놓은것입니다. (IP 및 instance명은 보안상 임의로 지정했습니다.)
금번 포스팅과 핵심적으로 관련된 내용만 설명드리겠습니다. (각 서버의 방화벽 설정은 배제함)
○ Jenkins는 etc(dmz zone)에 위치하고 있습니다.
○ 동일한 zone 내에서는 모든 프로토콜 통신이 가능합니다.
ex) prod(dmz)와 stage(dmz)는 서로 ssh, http, ftp, telnet등의 통신이 가능 (priv도 마찬가지)
○ 구성상 dmz와 priv간의 SSH 통신이 가능한 경우는 1가지 밖에 없음
ex) etc(dmz)에서 etc(priv)에 SSH Protocol로 접근 가능
결론적으로 etc(dmz)에서 prod(priv), stage(priv), dev(priv)에는 다이렉트로 SSH 접근이 불가능한 상황입니다.
따라서 etc(priv)를 거쳐 prod(priv), stage(priv), dev(priv)에 SSH 접근을 하기위하여 HTTP상의 Proxy와 같은 형태의 통신이 필요하다고 생각되어 이것저것 찾아보다가 SSH Jump Host를 찾게 되었습니다.
참고글
https://wiki.gentoo.org/wiki/SSH_jump_host
특정 목적지 서버에 SSH 접근을 위하여 중간에 다른 서버를 거쳐서 간다는건데
쉽게 생각하자면 실생활에서의 출발지 도착지 경유지라고 생각하면 될 것 같습니다.
바로 Jenkins에서 설정하는 방법을 알아보도록 하겠습니다.
1. 설정 화면
- Jenkins 메인화면 -> Manage Jenkins -> Configure System 또는 Jenkins URL뒤에 /configure URI로 접근
2. Publish over SSH
-
제일 하단에 위치한 등록된 서버 SSH 접속정보 목록 영역
3. SSH 접속 정보 추가
붉은색으로 표시된 부분만 입력 후 등록해주면 됩니다.
etc(dmz)에서 prod(priv)에 SSH 접속을 위하여 Jump Host를 etc(priv)로 설정해주었습니다.
등록을 하고난 후 TEST CONFIGURATION을 클릭해보면 연결이 안되는건지 Progress가 계속 도는걸 확인할 수 있는데
Jenkins Project에서 직접 통신을 해보면 성공적으로 SSH 접근이 되는것을 확인할 수 있습니다.
4. Jenkins Home -> New Item
5. Build -> Send files or execute commands over SSH
6. Build 후 Console 확인
위와 같이 성공적으로 dev(dmz)에 접속하여 명령어가 수행됩니다.
'Jenkins' 카테고리의 다른 글
[Jenkins] Linux(Ubuntu 18.04, CentOS 7) 환경 Jenkins 설치 (0) | 2020.10.13 |
---|
댓글