Windows용 공식 OpenSSH 패키지를 활용하면 클라이언트와 Windows 서버 간에 SFTP(Secure FTP) 프로토콜 기반의 안전한 파일 전송 환경을 손쉽게 구축할 수 있습니다. 이 글에서는 Win32-OpenSSH를 사용해 Windows 10 또는 Windows Server 2016/2012 R2에서 SFTP 서버를 실행하는 방법을 단계별로 소개합니다.
목차
- SFTP란 무엇인가?
- Windows에서의 SFTP 구현
- Windows 10 1803+ / Windows Server 2019에 Win32 OpenSSH 설치
- Windows Server 2016/2012 R2에 Win32 OpenSSH 설치
- WinSCP로 SFTP 연결 테스트
- Win32 OpenSSH 제거 방법
SFTP란 무엇인가?
SFTP(Secure File Transfer Protocol, SSH FTP)는 SSH 프로토콜의 확장 형태로, UNIX/Linux 세계에서 사실상 표준으로 자리 잡은 파일 전송 프로토콜입니다. 사용자 입장에서는 FTP와 비슷하게 느껴지지만, 실제로는 FTP와 공통점이 거의 없는 완전히 다른 프로토콜입니다. 모든 데이터는 SSH 터널(TCP 포트 22)을 통해 클라이언트와 서버 간에 전송됩니다.
SFTP의 주요 장점:
- 파일과 명령어가 모두 보안이 유지되는 SSH 세션 안에서 전송됩니다.
- 파일 전송과 명령 전송에 하나의 연결만 사용하므로 방화벽 설정이 단순합니다.
- 심볼릭 링크, 전송 중단/재개, 파일 삭제 등 다양한 기능을 지원합니다.
- 일반적으로 FTP가 느리거나 불안정한 네트워크 환경에서도 SFTP는 더 빠르고 안정적으로 동작합니다.
- SSH 키 기반 인증을 사용할 수 있어 보안성이 뛰어납니다.
주의할 점은 SFTP와 FTPS를 혼동하지 않는 것입니다. FTPS는 SSL 인증서를 적용한 일반 FTP에 불과하지만, SFTP는 FTP 데이터와 명령을 SSH 세션 내부에서 주고받는 별개의 프로토콜입니다.
Windows에서의 SFTP 구현
역사적으로 Windows 운영체제에는 SFTP 서버를 실행할 수 있는 내장 도구가 없었습니다. 그래서 Core FTP, FileZilla, CYGWIN, OpenSSH, FTP Shell, IPSwitch 같은 오픈소스 또는 상용 솔루션이 대안으로 사용되어 왔습니다. 그러나 몇 년 전 Microsoft가 Win32용 OpenSSH 포팅 버전을 공식 출시하면서 상황이 달라졌습니다. 이 프로젝트가 바로 Win32-OpenSSH입니다.
이제 Win32 OpenSSH 패키지를 사용해 Windows 10 또는 Windows Server 2019/2016/2012 R2에서 SFTP 서버를 구성하는 방법을 살펴보겠습니다.
Windows 10 1803+ / Windows Server 2019에 Win32 OpenSSH 설치
Windows 10 빌드 1803 이상과 Windows Server 2019에는 RSAT처럼 OpenSSH 패키지가 FoD(Feature on Demand) 형태로 운영체제에 기본 포함되어 있습니다.
다음 PowerShell cmdlet으로 OpenSSH 서버를 설치할 수 있습니다:
Add-WindowsCapability -Online -Name OpenSSH.Server*
또는 DISM을 사용할 수도 있습니다:dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
GUI를 선호한다면 Windows 설정(설정 → 앱 → 선택적 기능 → 기능 추가 → OpenSSH 서버 → 설치)에서도 추가할 수 있습니다.

- OpenSSH 실행 파일 위치:
c:\windows\system32\OpenSSH\ - sshd_config 설정 파일 위치:
C:\ProgramData\ssh(이 디렉터리는 sshd 서비스 최초 실행 시 생성됩니다) - 로그 파일:
c:\windows\system32\OpenSSH\logs\sshd.log - authorized_keys 파일과 키 저장 위치:
%USERPROFILE%\.ssh\
설치가 완료되면 Linux에서처럼 SSH를 통해 Windows 10에 접속할 수 있습니다.
Windows Server 2016/2012 R2에 Win32 OpenSSH 설치
구버전 Windows 10 및 Windows Server 2016/2012 R2에서는 GitHub(https://github.com/PowerShell/Win32-OpenSSH/releases)에서 OpenSSH를 직접 다운로드해 설치해야 합니다. Windows x64용 패키지인 OpenSSH-Win64.zip(약 3.5MB)을 받으세요.
- 압축을 대상 디렉터리(C:\OpenSSH-Win)에 해제합니다.
- 관리자 권한 PowerShell을 열고 OpenSSH 폴더로 이동합니다:
Cd C:\OpenSSH-Win - Path 환경 변수에 OpenSSH 디렉터리 경로를 추가합니다(시스템 속성 → 고급 탭 → 환경 변수 → Path 시스템 변수 편집 → OpenSSH 폴더 경로 추가).

- OpenSSH 서버를 설치합니다:
.\install-sshd.ps1— "sshd and ssh-agent services successfully installed"라는 초록색 메시지가 표시되면 성공입니다.
- sshd 서비스 시작에 필요한 SSH 호스트 키를 생성합니다:
ssh-keygen.exe –Assh-keygen: generating new host keys: RSA DSA ECDSA ED25519
- SSHD 서비스의 자동 시작을 설정하고 서비스를 시작합니다:
Set-Service -Name sshd -StartupType 'Automatic'Start-Service sshd - 컴퓨터를 재시작합니다:
Restart-Computer - PowerShell로 Windows 방화벽에서 TCP 22번 포트(SSH 인바운드)를 허용합니다:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH
참고: 위 명령은 구형 데스크톱 Windows 버전에서는 동작하지 않을 수 있습니다. 이 경우 아래 명령을 대신 사용하세요:netsh advfirewall firewall add rule name='SSH Port' dir=in action=allow protocol=TCP localport=22 - SSHD 설정 파일(C:\ProgramData\SSH\sshd_config)을 텍스트 편집기로 열고 Subsystem sftp 지시문 값을 확인합니다. 여기에 sftp-server.exe 파일이 지정되어 있어야 합니다.

필요에 따라 sshd_config 파일에서 다음 항목들을 추가로 구성할 수 있습니다:
AllowGroups corp\sftp_users # 해당 도메인 그룹에 속한 사용자만 OpenSSH에 접속 허용
AuthenticationMethods password # 비밀번호 인증 활성화(SSH 키 사용 불가)ForceCommand internal-sftpChrootDirectory C:\inetpub\wwwroot\ftpfolder # SFTP 사용자의 기본(루트) 디렉터리 지정
WinSCP로 SFTP 연결 테스트
이제 구축한 SSH 서버에 SFTP 프로토콜로 접속해 보겠습니다. 무료 클라이언트인 WinSCP를 사용하면 됩니다.
연결 설정 창에서 파일 전송 프로토콜로 SFTP를 선택하고, 서버 이름과 접속에 사용할 Windows 계정 정보를 입력합니다(키 기반 인증도 설정 가능합니다).

처음 접속을 시도하면 로컬 캐시에 호스트 키가 없다는 알림이 표시됩니다.

모든 설정이 올바르다면 클라이언트가 SFTP 서버에 정상 접속하고, 사용자 홈 디렉터리(기본값은 사용자 프로필 폴더)의 파일 목록을 표시합니다.
Total Commander와 같은 익숙한 파일 관리자 인터페이스를 통해 서버와 클라이언트 간에 파일을 자유롭게 복사할 수 있습니다. 모든 파일은 보안 SFTP 채널을 통해 전송됩니다.

Win32 OpenSSH 제거 방법
Win32 OpenSSH를 시스템에서 올바르게 제거하려면 다음 순서를 따르세요:
- 관리자 권한 PowerShell 세션을 실행합니다.
- SSHD 서비스를 중지합니다:
Stop-Service sshd - sshd 서비스를 제거합니다:
.\uninstall-sshlsa.ps1sshd successfully uninstalled ssh-agent successfully uninstalled