Jenkins로 CI/CD를 구축하여 윈도우 서버에 자동으로 배포를 할 수 있도록 조치가 필요하였다. 그래서 자동으로 배포하기 위해서는 ssh를 사용할 필요가 있었다.
SSH란?
ssh는 원격지에 연결하여 명령을 실행하고 파일을 주고받을 수 있도록 해 주는 프로토콜이다. 보통 원격을 위해 텔넷을 사용하는데 이는 암호화가 이루어지지 않아 보안에 취약하다. 그래서 ssh를 주로 사용하여 파일을 주고받는다.
그럼 본격적으로 ssh를 사용할 수 있도록 해보겠다.
현재 서비스를 운영하고 있는 서버의 OS는 윈도우 서버 2016이다. 빌드가 완료된 파일을 해당 서버에 ssh를 통해서 전달하기 위해서는 Open ssh라는 녀석을 설치해줘야 한다.
윈도우10 이상 (윈도우 서버 2019 이상) 에서는 open ssh 구성 요소에 포함되어있어 설치가 매우 간단하다... 그런데 문제는 내가 사용하는 os는 2016버전이다. 그래서 직접 파일을 구해 설치하고 설정하는 방법밖에 없다.
(윈도우 10 이상 버전 설치는 다음포스팅에서 적어보도록 하겠다.)
OpenSSH 설치
먼저 아래 사이트에 들어가 아래로 쭉 내려가면 Assets라고 보일 것이다 거기서 OpenSSH-Win64.zip파일을 설치해 준다.
https://github.com/PowerShell/Win32-OpenSSH/releases
Releases · PowerShell/Win32-OpenSSH
Win32 port of OpenSSH. Contribute to PowerShell/Win32-OpenSSH development by creating an account on GitHub.
github.com
파일을 다운로드하였으면 아래 경로에 압축파일을 풀어준다.
- 압축해제 경로 (C : \ Program Files \ OpenSSH-Win64)
다음으로 해당 폴더에 대해 환경변수를 추가해줘야 한다.
먼저 관리자 권한으로 powershell을 실행해 준다.
다음으로 Powershell에서 아래 명령어를 차례대로 입력해 주면 된다.
먼저 시스템 환경 변수 추가를 해준다.
setx PATH "$env:path;C:\Program Files\OpenSSH-Win64" -m
추가를 하면 이런 문구( SUCCESS: Specified value was saved. )가 나와야 정상적으로 환경변수에 추가가 된 것이다.
다음으로 OpenSSH 디렉토리로 이동해서 Openssh 설치 스크립트를 실행하여 설치를 진행해 준다.
#설치 폴더 이동
cd "C:\Program Files\OpenSSH-Win64"
#설치 스크립트를 실행
.\install-sshd.ps1
그런 다음 자동 시동을 활성화하고 SSHD 및 SSH-Agent를 시작해 준다.
Set-Service sshd -StartupType Automatic; Set-Service ssh-agent -StartupType Automatic; Start-Service sshd; Start-Service ssh-agent
통신을 위한 방화벽 설정
우선 ssh설치는 완료되었으나 해당 서버에 접속하기 위해서는 ssh 포트에 대해 방화벽 차단을 해제해야 한다. ssh 기본포트는 22번 포트이며 해당 포트를 등록해 주면 된다. 추후 보안을 위해 포트 번호를 바꿔야한다면 아래의 ssh 설정을 참고하여 포트번호를 바꾼 후 바뀐 포트 번호를 또 등록해주면 된다.
방화벽 설정은 다음과 같다.
제어판> 방화벽을 검색 > Windows Defender 방화벽 > 고급 설정에 들어가 방화벽을 설정해 준다.
고급 설정 왼쪽에서 인바운드 규칙 > 새 규칙… 을 클릭하면 설정을 위한 창이 나오게 된다.
포트를 선택하고 다음으로 넘어가준다.
규칙은 TCP, 포트는 특정 로컬 포트에서 22를 입력해 준다.(포트설정을 변경하였으면 해당 포트로 입력)
연결 허용을 선택하고 다음으로 넘어간다.
전체 선택을 한 후 다음으로 넘어간다.
규칙의 이름을 설정해 주고 마침을 누르면 방화벽 인바운드 규칙에 잘 적용되어 ssh로 통신을 할 수 있게 되었다.
OpenSSH 추가 설정
만약에 ssh의 포트를 변경하고 싶거나 파일을 받을 때 경로를 수정하고 싶다면 아래의 절차대로 해주면 된다.
- C:\ProgramData\ssh 폴더에서 sshd_config파일 메모장으로 실행해준다.
- 메모장에서 Port 22(기본값)을 찾아 앞부분의 #을 지우고 원하는 포트번호로 변경해 주면 된다.
- 마찬가지로 ChrrotDirectory를 찾아 아래와 같이 기본 경로를 설정해주면 파일을 받는 경로가 바뀔 것 이다.
- 설정이 다 끝났다면 저장해 주고 powershell을 열어 아래의 커맨드를 입력해 주면 설정이 끝난다.
Restart-service sshd
이번에는 간단하게 OpenSSH를 설치하고 설정하는 방법에 대해 적어보았다. 조금 더 보안에 신경 써서 하려면 ssh key를 사용해서 연결하는 방법인데 그건 jenkins를 구축하고 설정할 때 작성해 보도록 하겠다. 추가로 윈도우 2016 버전이 아닌 다른 버전에서 설치하는 방법도 적어봐야겠다.
'DevOps > OS' 카테고리의 다른 글
Hyper-V로 윈도우에 Ubuntu Desktop 24.04 설치하기 [2] (0) | 2024.07.10 |
---|---|
Hyper-V로 윈도우에 Ubuntu Desktop 24.04 설치하기 [1] (0) | 2024.07.09 |