步驟
@windows
應用程式內新增 OpenSSH伺服器
@powershell
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
Get-NetFirewallRule -Name *ssh* //檢視規則
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 //調整規則
調整 ssh_config 檔案 (%programdata%\ssh) & restart sshd
Port 22
ForceCommand internal-sftp //強制僅使用 sftp connections
Subsystem sftp sftp-server.exe -d "C:\Data_SFTP\"
ChrootDirectory C:\Data_SFTP //指定連線到特定目錄
AllowUsers sftpuser //加強管理
AllowGroups sshusers //加強管理
Logging //Windows OpenSSH 預設會記錄在事件檢視器。若要調整為記錄於檔案內需做以下調整。
SyslogFacility AUTH | LOCAL0 //AUTH 記錄在事件檢視器;LOCAL0 記錄在檔案
LogLevel INFO | VERBOSE | Debug3 (視需求)
LogLevel INFO | VERBOSE | Debug3 (視需求)
//針對特定的 group 限制(系統內新增 sftponly group,並設定指定受限帳號)
Match Group sftponly
ChrootDirectory C:\Apache2\htdocs
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory C:\Apache2\htdocs
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
//針對指定帳號登到指定目錄
Match User sftp_user
ChrootDirectory C:\Apache2\htdocs\sftp_user
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory C:\Apache2\htdocs\sftp_user
ForceCommand internal-sftp
X11Forwarding no
AllowTcpForwarding no
參考資料
- 在Windows 10架設SFTP(SSH Server)
- OpenSSH Server configuration for Windows Server and Windows
- Windows – How to restrict users to sftp in OpenSSH on Windows Server
- Windows 的 OpenSSH
- 如何為特定用戶設置SFTP登入後到chroot特定目錄?
- 適用于 Windows 10 1809 和 Windows Server 2019 的 OpenSSH 伺服器設定
- SSH Tunnel 設定方式 Windows 10
- 透過 OpenSSH 使用 SFTP 登入時將帳戶設為 chroot 的方法 (Linux)
- SFTP 的登入位置
- OpenSSH 金鑰管理
- [Security] 你該知道所有關於 SSH 的那些事