루젠소프트 로고

TODAY : 15,360

기술문서

 > 

Windows

Windows Server에 SFTP 서버 구축 (OpenSSH 사용)

Windows Server에 SFTP 서버 구축 (OpenSSH 사용)
평점 10.0 라이센스 free
사용자평점 10.0 운영체제
다운로드 1 파일크기 0
제작사 LUZENSOFT 등록일 2025-06-19 05:09:59
조회수 4
- 설명

Windows Server에 OpenSSH 서버를 설치하고 SFTP를 통해 특정 폴더에 접근하도록 설정하는 일반적인 단계입니다. 이 방법은 IIS와 독립적으로 작동하며, IIS 웹사이트의 물리적 경로를 SFTP 사용자의 홈 디렉터리로 지정하여 소스 코드에 접근하게 할 수 있습니다.


단계 1: OpenSSH 서버 설치

  1. 서버 관리자(Server Manager) 열기: Windows 시작 버튼을 클릭하고 "서버 관리자"를 검색하여 실행합니다.

  2. 역할 및 기능 추가(Add roles and features) 마법사 시작: "관리" 메뉴에서 "역할 및 기능 추가"를 클릭합니다.

  3. 기능(Features) 선택: "설치 유형 선택"에서 "역할 기반 또는 기능 기반 설치"를 선택하고 다음으로 진행합니다. "서버 선택"에서 현재 서버를 선택하고 다음으로 진행합니다. "서버 역할"을 건너뛰고 "기능" 섹션으로 이동합니다.

  4. OpenSSH 서버 설치:

    • "OpenSSH 서버"를 찾아 체크박스를 선택합니다.

    • "관리 도구 포함"에 필요한 경우 체크합니다.

    • "설치"를 클릭하여 설치를 완료합니다.

  5. 서비스 확인: 설치 후, "서비스(Services)" 앱(services.msc)을 열어 OpenSSH SSH ServerOpenSSH Authentication Agent 서비스가 있는지 확인합니다. OpenSSH SSH Server 서비스가 자동으로 시작되도록 시작 유형을 "자동"으로 설정하고 시작합니다.


단계 2: SFTP 사용자 계정 생성 및 권한 설정

  1. 새 사용자 계정 생성 (SFTP 전용 권장):

    • "컴퓨터 관리(Computer Management)" -> "로컬 사용자 및 그룹(Local Users and Groups)" -> "사용자(Users)"에서 SFTP 접속에 사용할 새 사용자 계정을 만듭니다. (예: sftpuser)

    • 강력한 비밀번호를 설정하고 "다음 로그인 시 사용자 반드시 암호 변경" 옵션을 해제하는 것이 좋습니다.

  2. 접근할 폴더 권한 설정:

    • IIS 웹사이트의 소스 코드가 있는 폴더 (예: C:inetpubwwwrootYourWebsite)로 이동합니다.

    • 이 폴더를 마우스 오른쪽 버튼으로 클릭 -> "속성(Properties)" -> "보안(Security)" 탭으로 이동합니다.

    • "편집(Edit)"을 클릭하고 방금 생성한 SFTP 사용자 계정(sftpuser)을 추가합니다.

    • sftpuser"읽기(Read)", "쓰기(Write)", "실행(Execute)" 권한을 부여합니다. (필요에 따라 "수정(Modify)" 또는 "모든 권한(Full control)"을 부여할 수 있으나 보안상 최소한의 권한을 주는 것이 좋습니다.)

    • 중요: 상위 폴더의 권한 상속을 주의하고, sftpuser가 해당 웹사이트 폴더 외의 다른 시스템 파일에 접근하지 못하도록 세밀하게 권한을 설정하는 것이 매우 중요합니다.


단계 3: OpenSSH Server 설정 (sshd_config)

  1. 설정 파일 열기: C:ProgramDatassh 폴더로 이동합니다. (이 폴더는 숨겨져 있을 수 있으므로 파일 탐색기에서 "숨김 항목" 표시를 활성화해야 합니다.) sshd_config 파일을 메모장(Notepad)이나 다른 텍스트 편집기(관리자 권한으로 실행)로 엽니다.

  2. SFTP 관련 설정:

    • 파일의 맨 아래 또는 적절한 위치에 다음 줄을 추가하거나 주석을 해제합니다.

      # SFTP를 활성화하고 SSH 쉘 접근을 제한합니다.
      Subsystem sftp internal-sftp
      
      # 사용자별로 특정 디렉토리만 접근하도록 제한 (chroot)
      Match User sftpuser # SFTP에 사용할 사용자 이름으로 변경 (예: sftpuser)
          ChrootDirectory C:inetpubwwwrootYourWebsite # IIS 웹사이트의 실제 경로
          ForceCommand internal-sftp
          AllowTcpForwarding no
          X11Forwarding no
          PermitTunnel no
          PasswordAuthentication yes # 비밀번호 인증 허용 (권장: 공개키 인증)
          # PublickeyAuthentication yes # 공개키 인증을 사용하려면 주석 해제하고 설정 필요
      
    • Match User sftpuser: sftpuser라는 사용자에게만 이 설정을 적용하겠다는 의미입니다.

    • ChrootDirectory C:inetpubwwwrootYourWebsite: 이 사용자가 SFTP로 접속했을 때 C:inetpubwwwrootYourWebsite 폴더가 마치 루트 폴더(/)인 것처럼 보이게 하여, 해당 폴더 외부로 이동할 수 없도록 제한합니다. 이는 보안상 매우 중요합니다.

      • ChrootDirectory의 권한 제한: ChrootDirectory로 지정된 폴더(이 경우 C:inetpubwwwrootYourWebsite)의 상위 폴더들(예: C:inetpub, C:)은 TrustedInstaller, SYSTEM, Administrators 그룹 외에는 쓰기 권한이 없어야 합니다. 그렇지 않으면 SFTP 접속이 실패할 수 있습니다. 상위 폴더들의 권한을 확인하고 필요한 경우 상속을 비활성화한 후 쓰기 권한을 제거해야 합니다.

    • ForceCommand internal-sftp: 이 사용자가 SSH 쉘 접근을 하지 못하고 오직 SFTP 파일 전송만 하도록 강제합니다.

    • PasswordAuthentication yes: 비밀번호를 통한 인증을 허용합니다. (보안 강화를 위해 공개키 인증 방식(PublickeyAuthentication yes)을 사용하는 것을 강력히 권장합니다.)

  3. 설정 파일 저장: sshd_config 파일을 저장합니다.

  4. OpenSSH SSH Server 서비스 재시작: 서비스 앱(services.msc)에서 OpenSSH SSH Server 서비스를 찾아 마우스 오른쪽 버튼을 클릭한 후 "다시 시작(Restart)"을 선택합니다.



단계 4: Windows 방화벽 설정

  1. Windows Defender 방화벽 열기: Windows 시작 버튼을 클릭하고 "Windows Defender 방화벽"을 검색하여 엽니다.

  2. 인바운드 규칙(Inbound Rules) 추가:

    • 왼쪽 메뉴에서 "인바운드 규칙"을 클릭합니다.

    • 오른쪽 "작업" 패널에서 "새 규칙(New Rule)..."을 클릭합니다.

    • 규칙 종류: "포트(Port)"를 선택하고 "다음(Next)" 클릭.

    • 프로토콜 및 포트: "TCP"를 선택하고 "특정 로컬 포트(Specific local ports)"에 22 (SFTP 기본 포트)를 입력하고 "다음" 클릭.

    • 작업: "연결 허용(Allow the connection)"을 선택하고 "다음" 클릭.

    • 프로필: 필요한 네트워크 프로필(도메인, 개인, 공용)을 선택하고 "다음" 클릭. (보안상 외부에서는 공용 네트워크를 허용하지 않는 것이 좋습니다.)

    • 이름: 규칙에 적절한 이름(예: SFTP (OpenSSH))을 부여하고 "마침(Finish)" 클릭.


단계 5: SFTP 클라이언트 (예: WinSCP, FileZilla)로 접속 테스트

  1. SFTP 클라이언트를 열고 다음 정보를 입력하여 접속을 시도합니다:

    • 프로토콜: SFTP

    • 호스트 이름: Windows Server의 IP 주소 또는 호스트 이름

    • 포트 번호: 22 (기본값)

    • 사용자 이름: sftpuser (만든 SFTP 계정 이름)

    • 비밀번호: sftpuser의 비밀번호

  2. 성공적으로 접속되면 C:inetpubwwwrootYourWebsite 폴더가 클라이언트에서 루트 폴더(/)로 보일 것이며, 해당 폴더 내의 소스 코드를 확인하고 수정할 수 있습니다.



중요한 보안 고려사항:

  • 비밀번호 대신 공개키 인증 사용: sshd_config에서 PublickeyAuthentication yes를 설정하고 클라이언트의 공개 키를 서버에 등록하는 것이 비밀번호 인증보다 훨씬 안전합니다.

  • 권한 최소화: SFTP 사용자에게 필요한 최소한의 권한만 부여합니다.

  • 방화벽: SFTP 포트(기본 22)는 외부에서 접근할 수 없도록 엄격하게 방화벽 규칙을 설정하거나, 특정 IP 주소에서만 접근을 허용하도록 제한합니다.

  • 로그 모니터링: SFTP 서버의 접속 로그를 주기적으로 확인하여 비정상적인 활동이 없는지 모니터링합니다. (C:ProgramDatasshlogs에 로그 파일이 있습니다.)

  • 정기적인 패치: Windows Server와 OpenSSH를 최신 상태로 유지하여 보안 취약점을 방지합니다.


이러러한 과정을 통해 IIS의 웹사이트 소스 코드 폴더에 SFTP로 안전하게 접근하고 수정할 수 있게 됩니다.