Windows 環境下,傳統 FTP 協定預設以明文傳輸帳號密碼與資料,極易遭竊聽。對於資安要求較高的企業,SFTP (SSH File Transfer Protocol) 是更佳選擇:它建立在 SSH 協定之上,預設加密所有命令與資料通道,且僅佔用單一埠(預設 22),穿透防火牆/NAT 設定極為簡單。
| 特性 | FTP | FTPS (FTP over SSL/TLS) | SFTP (SSH File Transfer Protocol) |
|---|---|---|---|
| 加密方式 | 無(明文) | SSL/TLS(需額外設定) | SSH(預設全程加密) |
| 埠號 | 21 (命令) + 隨機資料埠 | 21/990 + 隨機資料埠 | 單一埠 22 (預設) |
| 防火牆/NAT 友善度 | 差(需開放被動模式埠範圍) | 差(同 FTP) | 優(單一埠) |
| 驗證方式 | 帳號/密碼 | 帳號/密碼 + 憑證 | 帳號/密碼、公開金鑰、鍵盤互動等 |
| Unix/Linux 原生支援 | 需安裝伺服器軟體 | 需安裝伺服器軟體 | 內建 OpenSSH,免額外安裝 |
Windows 10 1809 / Windows Server 2019 起,OpenSSH Server 為選用功能,可直接啟用:
Start-Service sshdSet-Service -Name sshd -StartupType AutomaticNew-NetFirewallRule -Name "SSH" -DisplayName "OpenSSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22C:\ProgramData\ssh\sshd_config(建議設定):PasswordAuthentication yesPubkeyAuthentication yesSubsystem sftp sftp-server.exeRestart-Service sshd此為原生、免費、無第三方相依,最適合現代 Windows 環境。
適合舊版 Windows (XP/2003) 環境,新環境建議優先考慮方案一或二。
sftp 指令(命令列/腳本)New-PSSession -HostName server -UserName user 搭配 Copy-Item -ToSession (需 PowerShell 6+)PasswordAuthentication no,僅允許 PubkeyAuthentication yes。Port 2222 並同步調整防火牆。ChrootDirectory 或虛擬帳戶根目錄,防止目錄遍歷。C:\ProgramData\ssh\logs\ 或事件檢視器。sshd 服務運行、防火牆開放埠、sshd_config 監聽位址 (ListenAddress 0.0.0.0)。authorized_keys 檔案權限 (僅擁有者可讀寫)、金鑰格式 (OpenSSH/RFC4716)、家目錄權限 (chmod 700 ~/.ssh)。透過內建 OpenSSH 或 Bitvise,Windows 即可輕鬆建立企業級安全檔案傳輸服務,滿足合規與資安需求。