Published 2021. 10. 22. 10:34

젠킨스에서 배포 작업을 구현하고자 하는 경우, 대부분 SSH, SCP 명령을 이용하게 됩니다.

온라인 환경에서야 큰 어려움없이 배포 자동화를 구현할 수 있지만, 폐쇄망 환경에서는 고려할 부분이 많아지게 됩니다.

그래서 폐쇄망 환경에 초점을 맞추어 여러 방안들을 생각해보았습니다.


1. 1.  OpenSSH Server

원격 서버에 배포하는 경우 그 원격 서버는 다른 서버에서 SSH, SCP 명령을 받을 수 있는 SSH Server가 설치되어 있어야 합니다.

리눅스 계열의 OS는 대부분 SSH가 설치되어 있음을 보실 수 있지만, 윈도우는 설치가 안되어 있을 수도 있기에 오프라인 설치를 해줄 필요가 있을 수 있습니다.

이전 글에서 OpenSSH Server offline install 을 정리했습니다.

https://onestone-note.tistory.com/53

 

[Windows] openssh server offline install

1. openssh.zip 다운로드 및 압축 풀기 https://github.com/PowerShell/Win32-OpenSSH/releases Releases · PowerShell/Win32-OpenSSH Win32 port of OpenSSH. Contribute to PowerShell/Win32-OpenSSH developme..

onestone-note.tistory.com


2. 2.  shell command    or    plugin (X)

젠킨스에서 배포 자동화 구축시 스크립트에서 SSH, SCP 명령을 작성해주거나 Publish over SSH와 같은 플러그인을 이용할 수도 있습니다.

해당 글에서는 플러그인 부분을 정리하지 않았습니다. (플러그인이라는 것이 어떻게 보면 종속적인 부분을 가지게 되는 것이기도 하고 많은 플러그인들이 보안이 필요한 암호같은 것을 서버내 파일에 평문으로 저장해놓는 문제를 보이기도 하기에 플러그인을 사용하는 것이 꺼려졌습니다.)

 

그래서 스크립트에 SSH, SCP 명령을 작성해 배포 자동화를 구축해보고자 했습니다.

젠킨스에서는 스크립트에서 쉘 명령 작성시 one line으로 명령을 수행하게끔 작성해줄 필요가 있었습니다.

그래서 SSH 명령과 같은 경우, 비밀번호를 입력해야 하기에 one line 명령을 수행할 수 없는 문제점이 있었습니다.

 

이를 해결하기 위해서는 크게 2가지 방법이 있었습니다.

  1. SSH Key 등록- 가장 정석적인 방법입니다. 구글 검색을 하면 잘 정리되어 있는 블로그들이 많이 있습니다. 하지만, 폐쇄망 환경에서 이를 이용하고자 하는 경우 문제를 겪을 수도 있습니다. 로컬에서 생성한 SSH 공개키를 원격 서버에 등록하고 설정 파일을 수정해주어야 하는데 그 설정 파일인 sshd_config 는 관리자 계정에 종속되어 있습니다. 그런데 그 관리자 계정으로 어떤 작업을 한다는 것이 쉽지만은 않은 일이었습니다. (회사 시스템의 경우 보안 솔루션이 적용되어 있기에....)
  2. Putty 이용- plink -ssh -pw [패스워드] 를 이용해서 one line으로 비밀번호 입력까지 수행할 수 있습니다. 하지만, 스크립트에 작성하기 때문에 서버내 파일의 스크립트 부분에 그대로 패스워드가 기록되어 있다는 문제가 있습니다. 이 경우에는 파라미터 기능을 이용해서 변수에 비밀번호를 저장해놓고 사용하는 방식을 이용할 수 있습니다. (비밀번호는 암호화 처리되어 서버내 파일에 기록되게 됩니다.)
    plink -ssh -pw [패스워드] [사용자명]@[ip] "command"
    pscp -scp -r -pw [패스워드] [파일] [사용자명]@[ip]:[저장경로]

 

 

복사했습니다!