什么是SFTP?
SFTP(安全 文件傳輸協議,安全FTP或SSH FTP)是SSH協議的擴展,是UNIX / Linux系統中的標准。從用戶的角度來看,它與FTP相似,但是實際上,它是一個完全不同的協議,與FTP沒有任何共同點。數據通過SSH隧道(TCP端口22)在客戶端和服務器之間傳輸。
SFTP的主要優點:
- 文件和命令在安全的SSH會話中傳輸;
- 一個連接用於發送文件和命令。
- 支持符號鏈接,中斷/恢復傳輸,文件刪除功能等;
- 通常,在FTP速度慢或出現故障的通道中,SFTP連接會更快,更可靠。
- 使用SSH密鑰進行身份驗證的可能性。Windows中的SFTP實施
從歷史上看,Windows操作系統不提供任何內置工具來運行安全的SFTP服務器。為此,已經使用了開源或專有解決方案,例如Core FTP,FileZilla,CYGWIN,OpenSSH,FTP Shell,IPSwitch等。但是,幾年前,Microsoft為Win32發布了其版本的OpenSSH端口。該項目稱為Win32-OpenSSH。
讓我們考慮使用Win32 OpenSSH程序包運行Windows 10或Windows Server 2019/2016/2012 R2的SFTP服務器的配置。
在Windows 10 1803 + / Windows Server 2019上安裝Win32 OpenSSH
在Windows 10 build 1803和更高版本中以及在Windows Server 2019中,OpenSSH軟件包已經以諸如RSAT之類的按需功能(FoD)的形式包含在操作系統中。
您可以使用以下PowerShell cmdlet在Windows 10和Windows Server 2019上安裝OpenSSH服務器:
Add-WindowsCapability -Online -Name OpenSSH.Server*
或使用DISM:dism /Online /Add-Capability /CapabilityName:OpenSSH.Server~~~~0.0.1.0
您也可以從Windows 10 GUI添加OpenSSH服務器(設置 -> 應用程序 -> 可選功能 -> 添加功能 -> 打開SSH服務器 -> 安裝)。
- OpenSSH可執行文件位於以下目錄中:
c:\windows\system32\OpenSSH\
; - 所述的sshd_config配置文件位於的目錄:
C:\ProgramData\ssh
(sshd服務的第一次啟動后,將創建該目錄); - 日志文件:
c:\windows\system32\OpenSSH\logs\sshd.log
; - authorized_keys文件和密鑰存儲在目錄中:
%USERPROFILE%\.ssh\
。
在Windows Server 2016/2012 R2上安裝Win32 OpenSSH
在Windows 10的早期版本和Windows Server 2016/2012 R2中,必須從GitHub(https://github.com/PowerShell/Win32-OpenSSH/releases)下載並安裝OpenSSH 。您需要下載Windows x64的軟件包版本:OpenSSH-Win64.zip(3.5 MB)。將存檔解壓縮到目標目錄:C:\ OpenSSH-Win;
- 將存檔解壓縮到目標目錄:C:\ OpenSSH-Win;
- 啟動提升的PowerShell CLI並切換到OpenSSH文件夾:
Cd C:\OpenSSH-Win
- 將OpenSSH目錄的路徑添加到Path環境變量(系統屬性->高級選項卡->環境變量->選擇並編輯Path系統變量->將路徑添加到OpenSSH文件夾);
4.安裝OpenSSH服務器:(.\install-sshd.ps1
綠色消息應顯示“ sshd和ssh-agent服務已成功安裝 ”);
5、為服務器生成SSH密鑰(需要啟動sshd服務):ssh-keygen.exe –A
ssh-keygen: generating new host keys: RSA DSA ECDSA ED25519
Set-Service -Name sshd -StartupType ‘Automatic’
Start-Service sshd
7、重啟你的電腦:
Restart-Computer
8、使用PowerShell在Windows防火牆中打開TCP端口22,以接收傳入的SSH通信:
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH

