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 5040
공지 [계속 추가중] Keycloak 용어 및 설정 옵션 정의 황제낙엽 2024.02.02 5189
140 [FOSSLight] 'Download Location' 컬럼 값에 'Different from DB' 라는 푸른색 메세지가 출력 file 황제낙엽 2026.02.06 1173
139 [FOSSLight] Project Identification 진행시의 신규 OSS 등록 처리 방법 황제낙엽 2026.02.06 1187
138 [FOSSLight Hub] License 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 1176
137 [FOSSLight Hub] Open Source 정보를 직접 등록시 필요한 항목 목록 황제낙엽 2026.02.06 1156
136 [OSS] Microsoft.Web.WebView2 황제낙엽 2026.02.06 1305
135 [FOSSLight] fosslight 프로젝트의 'Pre-Review' > 'Open Source' 팝업창의 세 버튼에 대한 용도 황제낙엽 2026.02.06 1156
134 fosslight_prechecker 로 sbom-info.yaml to fosslight_pre.xlsx 변환후 Hub 등록, Identification 처리 file 황제낙엽 2026.02.05 1164
133 python venv 설치, fosslight source scanner , binary scanner 설치, 버전 확인 황제낙엽 2026.02.02 1156
132 SPDX 템플릿 다운로드 및 온라인 변환기 황제낙엽 2026.01.22 1395
131 SBOM(Software Bill of Materials) 및 소프트웨어 공급망 보안 관련 주요 정부 기관 및 단체 황제낙엽 2026.01.22 1146
130 sbom-info.yaml 을 이용한 dependency scan excel 작성 file 황제낙엽 2025.12.29 1157
129 binary scan 결과물에 대해 취약점이 없는데 왜 SBOM에 넣어야 하나? 황제낙엽 2025.12.17 1154
128 fosslight_source_scanner 에서 스캔 결과 License컬럼 : "New license" (실제 값은 있음) 황제낙엽 2025.12.03 1298
127 사내 개발 프레임워크 또는 내부용 공통 라이브러리에 대한 SBOM 적용 방안 황제낙엽 2025.11.28 1209
126 [ChatGPT, Gemini][FOSSLight Hub] Project Progress 의 Identification 단계의 데이터 에러 관련 황제낙엽 2025.11.28 1209
» Windows 11 Pro의 OpenSSH 기반 SFTP 서버 전용 사용자 계정 관리 황제낙엽 2025.11.07 1278
124 FileZilla Server 에서 기존 TLS 인증서로 SSL 설정 (v1.11.1 기준) 황제낙엽 2025.11.05 1380
123 binary scan 결과 엑셀(xlsx)에서 이미지, 폰트 항목 필터 방법 황제낙엽 2025.10.31 1135
122 win-acme 에서 강제 신규 발급 (같은 도메인이라도 새 order 생성) 황제낙엽 2025.10.18 1211
121 FOSSLight_Binary_Scanner 의 OWASP Dependency-Check 사용자 업그레이드 황제낙엽 2025.09.23 1164