윈도우 서버 2016에 SFTP 구축? 5분 만에 끝내는 초간단 설정법

2026-08-02 · 테크 · 읽는데 8분

윈도우 서버 2016에서 SFTP 서버를 구축하는 일이 막막하게 느껴질 수 있지만, 방법을 알고 나면 생각보다 간단합니다. OpenSSH만 설치하면 별도 유료 솔루션 없이도 기본적인 SFTP 서비스를 바로 운영할 수 있습니다. 설치부터 접속 테스트까지 실제로 5분이면 충분하며, 이 글에서 그 과정을 단계별로 설명합니다.

윈도우 서버 2016에서 SFTP 구축하려면 어떤 준비물이 필요할까

SFTP 서버를 만들기 위해 필요한 것은 크게 세 가지입니다. 첫 번째는 관리자 권한으로 접속할 수 있는 윈도우 서버 2016 환경, 두 번째는 GitHub에서 제공하는 OpenSSH Win64 설치 파일, 마지막으로 파일을 주고받을 때 사용할 SFTP 클라이언트 프로그램입니다.

OpenSSH는 Windows Server 2016에 기본 포함되어 있지 않기 때문에 별도로 다운로드해야 합니다. 다행히 마이크로소프트가 공식적으로 Win32-OpenSSH 프로젝트를 운영하고 있어, GitHub 릴리스 페이지에서 최신 버전을 받을 수 있습니다. 다운로드한 zip 파일을 압축 풀고 설치 스크립트를 실행하는 방식이라 복잡한 컴파일 과정은 필요 없습니다.

OpenSSH 설치부터 서비스 자동 시작 설정까지 한 번에

가장 먼저 할 일은 OpenSSH-Win64.zip 파일을 다운로드하는 것입니다. GitHub의 PowerShell/Win32-OpenSSH 릴리스 페이지에 접속한 뒤 최신 릴리스를 찾아 파일을 받으면 됩니다. 압축을 풀 때는 C:\Program Files\OpenSSH 같은 경로를 권장하며, 폴더명은 이후 명령어 실행에 그대로 사용되므로 영어로 유지하는 것이 좋습니다.

이제 관리자 권한으로 PowerShell을 열고 다음 명령어를 순서대로 실행합니다. 이 과정에서 OpenSSH가 시스템에 설치되고 sshd 서비스가 등록됩니다.

cd 'C:\Program Files\OpenSSH'
.\install-sshd.ps1

설치가 끝나면 sshd와 ssh-agent 서비스를 시작하고, 재부팅 후에도 자동으로 실행되도록 시작 유형을 변경해 둡니다.

Start-Service sshd
Start-Service ssh-agent
Set-Service -Name sshd -StartupType 'Automatic'
Set-Service -Name ssh-agent -StartupType 'Automatic'

여기까지 진행하면 서버에서 SFTP 연결을 받을 준비가 된 상태입니다. 다만 외부에서 접속하려면 방화벽에서 22번 포트를 열어야 하는데, 아래 명령어로 인바운드 규칙을 추가할 수 있습니다.

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

접속용 사용자 계정과 전용 폴더를 만드는 방법

SFTP로 접속할 때는 윈도우 사용자 계정이 곧 SFTP 계정이 됩니다. 이미 서버에 사용자 계정이 있다면 그대로 활용할 수 있고, 새로 만든다면 서버 관리자의 사용자 추가 기능을 이용하면 됩니다. 단순히 파일 전송만을 위한 계정이라면 비밀번호 정책을 충족하는 계정을 하나 만들어 두는 것이 편리합니다.

사용자마다 전용 작업 폴더를 만들어 주는 것이 관리 차원에서 좋습니다. 예를 들어 username이라는 계정을 만들었다면 C:\SFTP\username 폴더를 생성하고, 해당 사용자에게만 권한을 부여합니다.

New-Item -ItemType Directory -Path "C:\SFTP\username"
icacls "C:\SFTP\username" /grant username:F

여기서 주의할 점은 username 자리에 실제 윈도우 계정 이름을 넣어야 한다는 것입니다. 계정 이름을 잘못 입력하면 권한 부여가 되지 않으니, 서버에서 확인한 정확한 계정명을 사용하세요.

실제로 접속이 되는지 WinSCP 또는 FileZilla로 테스트하기

설정이 끝났다면 실제 접속 테스트를 해보는 것이 가장 확실합니다. WinSCP나 FileZilla 같은 무료 SFTP 클라이언트를 사용하면 됩니다. 접속 정보는 다음과 같이 입력합니다.

  • 호스트: 서버의 IP 주소 또는 도메인 이름
  • 포트: 22
  • 사용자 이름: 윈도우 사용자 계정명
  • 비밀번호: 해당 계정의 비밀번호

연결이 성공하면 C:\SFTP\username 폴더가 보이고, 파일을 업로드하거나 다운로드할 수 있습니다. 이때 서버에서 사용자 이름이나 비밀번호가 틀렸다는 오류가 반복된다면, 해당 계정이 원격 로그인을 허용하는 그룹에 속해 있는지 확인해 봐야 합니다. 기본적으로 관리자 그룹이 아닌 일반 사용자는 OpenSSH 로그인 권한이 없을 수 있습니다.

특정 사용자를 특정 폴더에만 가두는 보안 설정

기본 상태에서는 SFTP로 접속한 사용자가 윈도우 서버의 여러 폴더를 탐색할 수 있습니다. 서버 전체를 관리하는 용도가 아니라면, 사용자별로 접근 가능한 폴더를 제한하는 것이 안전합니다. 이때 sshd_config 파일을 수정하면 됩니다.

설정 파일은 C:\ProgramData\ssh\sshd_config에 위치하며, 메모장이나 에디터로 연 뒤 파일 맨 아래에 다음 내용을 추가합니다.

Match User username
ChrootDirectory C:\SFTP\username
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no

username 자리에는 제한하려는 실제 계정 이름을 넣습니다. 이렇게 설정하면 해당 사용자는 C:\SFTP\username 폴더가 마치 서버의 루트 디렉토리처럼 보이고, 그 밖의 경로에는 접근할 수 없습니다. 변경 후에는 sshd 서비스를 다시 시작해야 적용됩니다.

Restart-Service sshd

이 설정을 적용할 때 한 가지 주의할 점이 있습니다. ChrootDirectory로 지정하는 폴더의 권한이 너무 개방적이면 SSH 서비스가 정상적으로 시작되지 않을 수 있습니다. 해당 폴더는 관리자 또는 SYSTEM 계정만 소유하고, 일반 사용자에게는 쓰기 권한만 주는 방식이 안정적입니다.

연결이 안 될 때 확인해야 할 체크리스트

SFTP 접속이 실패하는 경우 대부분 몇 가지 원인으로 좁혀집니다. 방화벽 규칙이 제대로 추가되었는지, 서버에서 sshd 서비스가 실행 중인지, 접속에 사용하는 계정이 비밀번호 인증을 허용하는지 순서대로 확인해 보세요.

  • 방화벽에서 22번 포트 인바운드가 허용되어 있는지
  • Get-Service sshd 명령어로 서비스 상태가 Running인지
  • 접속 계정이 Administrators 그룹에 없어도 되는지
  • sshd_config 파일에서 PasswordAuthentication yes로 설정되어 있는지
  • ChrootDirectory를 적용한 경우 폴더 소유권이 SYSTEM인지

위 항목을 하나씩 점검하면 대부분의 연결 문제는 해결됩니다.

FAQ

Q. 윈도우 서버 2016에서 OpenSSH 설치는 어디서 하나요?

GitHub의 PowerShell/Win32-OpenSSH 릴리스 페이지에서 OpenSSH-Win64.zip 파일을 내려받아 압축을 풀고, 관리자 PowerShell에서 install-sshd.ps1 스크립트를 실행하면 됩니다.

Q. SFTP 접속 시 사용자 이름은 무엇을 입력해야 하나요?

윈도우 서버에 등록된 사용자 계정 이름을 입력하면 됩니다. 별도로 SFTP 전용 계정을 만드는 것이 아니라 윈도우 계정이 곧 접속 계정입니다.

Q. 외부에서 접속이 안 되는데 어떤 설정을 확인해야 하나요?

가장 먼저 22번 포트에 대한 방화벽 인바운드 규칙이 있는지 확인하고, sshd 서비스가 실행 중인지 점검하세요. 서버가 공인 IP를 직접 쓰는지, 포트 포워딩이 필요한 환경인지도 함께 살펴봐야 합니다.