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) 해 템플릿 자동화 권장.


 

 

번호 제목 sitelink1 글쓴이 날짜 조회 수
공지 [계속 추가중] SBOM 용어 정의   황제낙엽 2025.04.10 464
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의   황제낙엽 2024.02.02 1045
122 fosslight_source_scanner 에서 스캔 결과 License컬럼 : "New license" (실제 값은 있음) https://spdx.org/licenses  황제낙엽 2025.12.03 5
121 사내 개발 프레임워크 또는 내부용 공통 라이브러리에 대한 SBOM 적용 방안 https://spdx.org/licenses  황제낙엽 2025.11.28 9
» Windows 11 Pro의 OpenSSH 기반 SFTP 서버 전용 사용자 계정 관리   황제낙엽 2025.11.07 21
119 FileZilla Server 에서 기존 TLS 인증서로 SSL 설정 (v1.11.1 기준) https://www.youtube.com/watch?v=z7mzSyymZ9U  황제낙엽 2025.11.05 28
118 win-acme 에서 강제 신규 발급 (같은 도메인이라도 새 order 생성)   황제낙엽 2025.10.18 29
117 NVD (National Vulnerability Database) Data Feeds https://nvd.nist.gov/vuln/data-feeds#divJson20Feeds  황제낙엽 2025.09.23 45
116 ScanCode Toolkit 에서 검출한 라이선스 정보중 'unknown-license-reference' 관련 https://scancode-toolkit.readthedocs.io/...rence.html  황제낙엽 2025.09.19 42
115 [FOSSLight Hub] ./service/template/SPDXRdf_2.2.2.xls (No such file or directory) file https://github.com/fosslight/fosslight/issues/1064  황제낙엽 2025.09.19 49
114 LG 의 Open Source Compliance 활동 https://opensource.lge.com/guide/7  황제낙엽 2025.09.18 79
113 OWASP Dependency-Check https://github.com/dependency-check/DependencyCheck  황제낙엽 2025.09.17 75
112 NVD (National Vulnerability Database) API 키 발급 후 설정하기 https://nvd.nist.gov/developers/request-an-api-key  황제낙엽 2025.09.17 119
111 fosslight_binary_scanner 에서 스캔 결과 exclude 의 의미   황제낙엽 2025.09.16 36
110 SPDX(Java Tools) - SPDX 문서의 생성, 파싱, 검증, 조작, 직렬화 https://github.com/spdx/tools-java  황제낙엽 2025.07.30 37
109 FOSSLight 의 Scanner 중 SBOM 산출 가능 Scanner https://github.com/fosslight/fosslight_dependency_scanner  황제낙엽 2025.07.23 52
108 [Gemini] OSS Review Toolkit 의 도움말 번역 https://github.com/oss-review-toolkit/ort  황제낙엽 2025.06.25 38
107 SPDX 를 지원하는 Open Source 목록 https://spdx.dev/tools/open-source-tools/  황제낙엽 2025.06.24 69
106 (Microsoft) sbom-tool generate 명령어 옵션 설명 https://github.com/microsoft/sbom-tool  황제낙엽 2025.06.24 71
105 [Google] OSV-Scanner 의 scan source 의 help 한글 번역   황제낙엽 2025.06.23 30
104 [Gemini] Google 의 OSV-Scanner, OSV-Scalibr, OSV-Scanner V2 https://google.github.io/osv-scanner  황제낙엽 2025.06.23 53
103 소스 파일 내용에서 라이선스 정보를 추출하는 기능이 있는 오픈소스 도구   황제낙엽 2025.06.23 55