sitelink1  
sitelink2  
sitelink3  
sitelink4  
extra_vars5  
extra_vars6  

아래 문서는 Windows 11 Pro의 OpenSSH 기반 SFTP 서버에서, FTP 서비스 용도로만 쓰는 SFTP 전용 계정을 만들고(생성), 바꾸고(수정), 없애는(삭제) 표준 운영 절차서(SOP) 입니다.
(※ “전용”이므로 쉘/원격명령 불가, SFTP만 허용, 홈 디렉터리 격리를 기본 정책으로 합니다.)


1) 범위 / 전제

  • 대상: Windows 11 Pro + OpenSSH Server (sshd)

  • 계정 유형: 로컬 사용자(Local user) 권장 (도메인 사용 시 절차 동일하나 그룹정책/권한은 AD에서 병행)

  • SFTP만 허용: sshd_configMatch 블록 + ForceCommand internal-sftp 사용

  • 홈 디렉터리 예시: D:\SFTP\<계정명> (운영 환경에 맞춰 드라이브/경로 조정)


2) 표준 정책

  • 암호/키 인증: 기본은 키 기반 인증 권장, 비밀번호는 정책에 맞게(길이/복잡도/주기)

  • 권한(ACL): 홈 폴더는 해당 사용자 + Administrators만 접근, 상위 폴더는 읽기 제한

  • 로그/감사: Windows 이벤트 로그(“OpenSSH/Operational”)와 접근 로그 중앙수집(선택)

  • 변경 관리: C:\ProgramData\ssh\sshd_config 변경 전 백업, 변경 후 테스트 → 재시작


3) 사전 점검 (공통)

# OpenSSH Server 설치/상태
Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'
Get-Service sshd

# 포트 오픈 확인(22/TCP)
Test-NetConnection -ComputerName localhost -Port 22

4) 생성 절차 (Create)

4.1 로컬 사용자 생성

# 관리자 PowerShell 실행
$User = "sftp_jinie"         # 예시 계정명
$Pass = Read-Host "New password" -AsSecureString
New-LocalUser -Name $User -Password $Pass -NoPasswordNeverExpires:$true -AccountNeverExpires:$true -Description "SFTP 전용 계정"
# (원하면) Users 그룹에만 포함되도록 확인
Add-LocalGroupMember -Group "Users" -Member $User

운영 정책상 대화형 로그온 금지가 필요하면 로컬 보안 정책(GPO)에서 “로컬 로그온 거부”에 계정을 추가하세요.

4.2 홈 디렉터리/권한 준비

$Home = "D:\SFTP\$User"
New-Item -ItemType Directory -Path $Home -Force | Out-Null

# 상위 루트(D:\SFTP)는 목록만 가능하게, 각 홈은 본인만 풀권한
icacls "D:\SFTP" /inheritance:r /grant:r "Administrators:(OI)(CI)(F)" "SYSTEM:(OI)(CI)(F)" /T
icacls $Home /inheritance:r /grant:r "$User:(OI)(CI)(F)" "Administrators:(OI)(CI)(F)" "SYSTEM:(OI)(CI)(F)"

4.3 키 기반 인증(권장)

# 사용자 프로필 경로
$ProfileRoot = (Get-LocalUser $User).SID | ForEach-Object {
    (Get-Item "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$_").GetValue("ProfileImagePath")
}
$SshDir = Join-Path $ProfileRoot ".ssh"
New-Item -ItemType Directory -Path $SshDir -Force | Out-Null

# 공개키 등록(아래는 예시; 실제 공개키로 교체)
$PubKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEXAMPLEexampleEXAMPLE user@host"
$Auth = Join-Path $SshDir "authorized_keys"
$PubKey | Out-File -FilePath $Auth -Encoding ascii -Force

# .ssh/authorized_keys 권한 600 스타일
icacls $SshDir /inheritance:r /grant:r "$User:(OI)(CI)(F)" "Administrators:(OI)(CI)(F)" "SYSTEM:(OI)(CI)(F)"
icacls $Auth   /inheritance:r /grant:r "$User:(R,W)" "Administrators:(F)" "SYSTEM:(F)"

4.4 SFTP 전용 강제 (sshd_config)

  1. 백업

Copy-Item "C:\ProgramData\ssh\sshd_config" "C:\ProgramData\ssh\sshd_config.bak_$(Get-Date -Format yyyyMMddHHmmss)"
  1. 설정 파일에 Subsystem / Match 블록 추가(또는 존재 시 병합)

# C:\ProgramData\ssh\sshd_config

# SFTP 서브시스템(권장: internal-sftp)
Subsystem sftp internal-sftp

# SFTP 전용 계정 정책
Match User sftp_jinie
    ForceCommand internal-sftp -d "D:/SFTP/sftp_jinie"
    PasswordAuthentication yes
    PubkeyAuthentication yes
    # 필요 시 셸/포워딩 제한
    AllowTcpForwarding no
    X11Forwarding no

여러 전용계정 운영 시 Match User에 공백 구분 다중 지정 가능(예: Match User user1,user2,user3)
시작 디렉터리 -d는 따옴표/경로 구분자 주의(Windows 경로는 / 또는 이스케이프된 \ 모두 가능)

  1. 서비스 재시작 & 테스트

Restart-Service sshd
# 로컬에서 테스트 (키/비번 둘 다)
sftp sftp_jinie@localhost

5) 수정 절차 (Modify)

5.1 비밀번호 변경

$User = "sftp_jinie"
$NewPass = Read-Host "New password" -AsSecureString
Set-LocalUser -Name $User -Password $NewPass

5.2 공개키 교체/추가

$Auth = "C:\Users\sftp_jinie\.ssh\authorized_keys"
notepad $Auth     # 키 추가/삭제
# 저장 후 권한 재확인
icacls $Auth /inheritance:r /grant:r "sftp_jinie:(R,W)" "Administrators:(F)" "SYSTEM:(F)"

5.3 홈 디렉터리 변경

  1. 새 디렉터리 생성/권한 부여 → 데이터 마이그레이션

  2. sshd_configMatch User ... -d "새경로" 수정 → 백업 후 저장

  3. Restart-Service sshd → 접속 테스트

5.4 접속 제한/해제 (임시 잠금)

# 계정 비활성화
Disable-LocalUser -Name "sftp_jinie"
# 재활성화
Enable-LocalUser -Name "sftp_jinie"

또는 sshd_config의 해당 Match 블록을 주석처리/삭제 후 재시작으로 차단(정책적).


6) 삭제 절차 (Delete)

6.1 사전 백업/차단

  • 데이터 보존 정책에 따라 홈 디렉터리 ZIP/이관

  • Disable-LocalUser 로 즉시 잠금 → 운영 승인 후 최종 삭제

6.2 사용자/리소스 삭제

# 서비스 중지 필요 없음(권장: 업무 비시간)
Remove-LocalUser -Name "sftp_jinie"

# 홈 폴더/키 파일 정리(정책에 따라 보존/삭제)
Remove-Item -Recurse -Force "D:\SFTP\sftp_jinie"
# sshd_config Match 블록 제거 후 재시작
Restart-Service sshd

7) 점검 체크리스트

  • sshd 서비스 실행/자동시작

  • 포트 22 열림(방화벽 규칙 OpenSSH-Server-In-TCP)

  • sshd_config 백업·버전관리, Subsystem sftp internal-sftp 존재

  • Match User <계정> 블록에 ForceCommand internal-sftp 설정

  • 홈 디렉터리 권한: 계정/Administrators/SYSTEM만

  • .ssh\authorized_keys 권한 600 스타일 유지

  • 테스트: sftp <계정>@localhost 업/다운로드 정상

  • 이벤트 로그(OpenSSH/Operational) 오류 없는지 확인


8) 운영 팁

  • 여러 계정 공통 정책Match Group sftp_users로 묶고, 로컬 그룹 sftp_users에 사용자 추가해서 관리하면 편합니다.

  • FTPS(FTP over TLS) 대신 SFTP를 쓰면 방화벽·NAT·인증이 단순해지므로 운영 비용↓.

  • 외부망 노출 시 키 인증 강제, 비밀번호 인증 비활성화(+ 2FA/보안장비) 권장:

    PasswordAuthentication no
    PubkeyAuthentication yes
    
  • 대규모 환경은 폴더/권한/Match 블록을 스크립트화(PowerShell) 해 템플릿 자동화 권장.


 

 

번호 제목 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의 황제낙엽 2025.04.10 8256
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의 황제낙엽 2024.02.02 8536
» Windows 11 Pro의 OpenSSH 기반 SFTP 서버 전용 사용자 계정 관리 황제낙엽 2025.11.07 2221
31 FileZilla Server 에서 기존 TLS 인증서로 SSL 설정 (v1.11.1 기준) 황제낙엽 2025.11.05 2358
30 OpenSSL 설치 황제낙엽 2024.11.12 2084
29 서버의 인증서 파일을 갱신후 브라우저의 인증서 뷰어에서 새 인증서 정보가 조회되지 않을 경우 황제낙엽 2024.08.23 2132
28 SSL 인증서 파일 포맷 종류 - crt, cer, csr, pem, der, pfx, p12, jks, key 황제낙엽 2020.07.20 2213
27 SNI 기반 HTTPS 사이트 차단 file 황제낙엽 2020.03.04 2162
26 사설인증서 공인인증서 구분 방법 file 황제낙엽 2019.07.16 2113
25 Convert Certificate Format SSL 인증서 변환 가이드 황제낙엽 2019.03.29 2088
24 *.key와 *.crt를 PKCS#12(*.pfx, *.p12)로 형식으로 변환하기 황제낙엽 2019.03.29 2298
23 HOWTO: DER vs. CRT vs. CER vs. PEM Certificates and How To Convert Them 황제낙엽 2019.03.29 3032
22 How to convert a certificate file from .crt to .cer? file 황제낙엽 2019.03.29 5663
21 국내(KOREA) IP 사용 대역 file 황제낙엽 2019.02.21 2527
20 서버 보안 관리를 위한 백업과 점검 절차 황제낙엽 2017.05.30 2166
19 정보 보안 개론 : 네이버 지식백과 황제낙엽 2017.05.19 2197
18 개발용 tomcat 운용시 tomcat-users.xml 의 관리 주의 황제낙엽 2017.04.07 2267
17 윈도우 원격데스크톱(RDP) 접근 이력 조회 file 황제낙엽 2017.04.06 2225
16 SSL, TLS, OpenSSL 관련 황제낙엽 2015.12.31 2240
15 운영 모드 ( Mode of Operation ) 황제낙엽 2013.03.07 2239
14 암호화 알고리즘 스크랩 황제낙엽 2012.08.28 4948
13 미연방 표준 암호 알고리즘 황제낙엽 2010.05.21 2285