윈도우 서버 2016에서 SFTP 서버를 구축하려면 OpenSSH를 설치하고 서비스만 시작하면 됩니다. 전체 과정은 5분 안에 끝낼 수 있으며, 모든 도구는 무료로 제공됩니다. 아래 단계를 그대로 따라 하면 별도 비용 없이 바로 파일 전송이 가능합니다.
윈도우 서버 2016 SFTP 구축, 왜 OpenSSH를 써야 할까
SFTP는 SSH 프로토콜 위에서 동작하는 파일 전송 방식입니다. 우리나라 기업 환경에서는 보안상 FTP보다 SFTP를 선호하는 경우가 많습니다. 윈도우 서버 2016 자체에는 SFTP 기능이 기본 포함되어 있지 않지만, 마이크로소프트에서 공식 지원하는 OpenSSH 포트를 설치하면 간단히 해결됩니다.
FTPS와 혼동하는 경우가 있는데, SFTP는 SSH 기반이라 포트 하나(22번)만 열면 되고 방화벽 설정도 단순합니다. 반면 FTPS는 데이터 채널용 추가 포트가 필요해 운영이 까다롭습니다. 따라서 윈도우 서버 2016에서는 OpenSSH를 통한 SFTP 구축이 가장 실용적인 선택입니다.
OpenSSH 설치부터 서비스 시작까지 3분이면 끝
OpenSSH 설치는 PowerShell 명령어 몇 줄로 완료됩니다. GUI 도구 없이도 가능하지만, 처음 해보는 분도 부담 없을 정도로 간단합니다.
설치 준비물
- 관리자 권한으로 실행한 PowerShell
- GitHub에서 다운로드한 OpenSSH-Win64.zip 파일
1. OpenSSH 다운로드 및 압축 풀기
PowerShell/Win32-OpenSSH 릴리스 페이지에서 최신 OpenSSH-Win64.zip을 다운로드합니다. 압축을 푼 후 C:\Program Files\OpenSSH 폴더로 옮겨 놓습니다.
2. 설치 스크립트 실행
cd 'C:\Program Files\OpenSSH'
.\install-sshd.ps1
스크립트 실행이 완료되면 sshd와 ssh-agent 서비스가 등록됩니다.
3. 서비스 시작 및 자동 실행 설정
Start-Service sshd
Start-Service ssh-agent
Set-Service -Name sshd -StartupType 'Automatic'
Set-Service -Name ssh-agent -StartupType 'Automatic'
서버 재부팅 후에도 SFTP가 자동으로 동작하게 하려면 위 명령어로 시작 유형을 '자동'으로 바꾸는 것이 필수입니다.
4. 방화벽 규칙 추가
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
이 명령어 하나면 22번 포트가 열리고 외부에서 접속할 수 있게 됩니다.
사용자 홈 디렉토리 만들고 권한 설정하는 법
SFTP로 파일을 주고받으려면 사용자별로 전용 폴더를 만들어야 합니다. 윈도우 사용자 계정을 그대로 활용하므로 별도 계정 생성은 필요 없지만, 홈 디렉토리는 직접 지정해야 합니다.
디렉토리 생성 예시 (username은 실제 계정명으로 바꾸세요)
New-Item -ItemType Directory -Path "C:\SFTP\username"
icacls "C:\SFTP\username" /grant username:F
icacls 명령어에서 F는 모든 권한(Full Control)을 의미합니다. 읽기 전용만 허용하려면 R로 변경할 수 있습니다. 이렇게 하면 해당 사용자는 지정된 폴더 안에서만 파일을 자유롭게 업로드/다운로드할 수 있습니다.
SFTP 접속 테스트, 어떤 클라이언트를 써도 문제없음
설치와 사용자 설정이 끝났다면 실제로 접속이 되는지 확인해야 합니다. WinSCP, FileZilla 등 무료 SFTP 클라이언트를 사용하면 됩니다.
접속 정보 입력 예시
- 호스트: 서버 IP 주소 또는 도메인
- 포트: 22
- 사용자 이름: 윈도우 사용자 계정명
- 비밀번호: 해당 계정의 비밀번호
연결이 성공하면 C:\SFTP\username 폴더의 내용이 클라이언트 화면에 나타납니다. 파일을 끌어다 놓기만 해도 전송이 이루어집니다.
사용자 접근 제한이 필요하다면 sshd_config 편집
보안을 강화하려면 특정 사용자가 자기 폴더 밖으로 나가지 못하도록 제한할 수 있습니다. C:\ProgramData\ssh\sshd_config 파일을 열어 맨 아래에 다음 내용을 추가합니다.
Match User username
ChrootDirectory C:\SFTP\username
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
ChrootDirectory: 사용자가 볼 수 있는 최상위 폴더를 고정ForceCommand internal-sftp: SSH 접속을 막고 SFTP만 허용AllowTcpForwarding no,X11Forwarding no: 포트 포워딩과 GUI 전송 차단
설정을 바꾼 후에는 반드시 sshd 서비스를 재시작해야 적용됩니다.
Restart-Service sshd
FAQ
Q. OpenSSH 설치 스크립트가 실행되지 않을 때는 어떻게 하나요?
PowerShell 실행 정책이 제한되어 있을 수 있습니다. 관리자 권한으로 Set-ExecutionPolicy RemoteSigned를 먼저 실행한 후 다시 시도하세요.
Q. SFTP 접속은 되는데 파일 업로드가 안 됩니다
홈 디렉토리의 권한 문제일 가능성이 큽니다. icacls 명령어로 사용자에게 쓰기 권한이 제대로 부여되었는지 확인하세요.
Q. 외부 접속이 안 될 때 확인할 점은?
방화벽에서 22번 포트가 열려 있는지, 그리고 서버 자체 방화벽 외에 클라우드 보안 그룹이나 공유기 포트 포워딩 설정도 함께 확인해야 합니다.
Q. 여러 사용자를 추가하려면 어떻게 하나요?
사용자마다 홈 디렉토리를 만들고 icacls로 권한을 준 뒤, sshd_config에 Match User 구문을 각각 추가하면 됩니다.
Q. 기본 포트 22를 다른 포트로 바꿀 수 있나요?
가능합니다. sshd_config에서 Port 값을 원하는 번호로 변경한 후 방화벽 규칙과 클라이언트 접속 포트도 함께 수정하면 됩니다.