【玩转Server 2019 】在Windows上使用OpenSSH安装SFTP(SSH FTP)服务器

什么是SFTP?

SFTP安全 文件传输协议安全FTPSSH FTP)是SSH协议的扩展,是UNIX / Linux系统中的标准。从用户的角度来看,它与FTP相似,但是实际上,它是一个完全不同的协议,与FTP没有任何共同点数据通过SSH隧道(TCP端口22)在客户端和服务器之间传输。

SFTP的主要优点:

  1. 文件和命令在安全的SSH会话中传输;
  2. 一个连接用于发送文件和命令。
  3. 支持符号链接,中断/恢复传输,文件删除功能等;
  4. 通常,在FTP速度慢或出现故障的通道中,SFTP连接会更快,更可靠。
  5. 使用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服务器的配置

 不要混淆SFTP和FTPS协议。FTPS本质上只是具有SSL证书的简单FTP,而SFTP是在SSH会话内发送FTP数据和命令的协议。

 

 在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;

  1. 将存档解压缩到目标目录:C:\ OpenSSH-Win;
  2. 启动提升的PowerShell CLI并切换到OpenSSH文件夹:Cd C:\OpenSSH-Win
  3. 将OpenSSH目录的路径添加到Path环境变量(系统属性->高级选项卡->环境变量->选择并编辑Path系统变量->将路径添加到OpenSSH文件夹);

 

4.安装OpenSSH服务器:(.\install-sshd.ps1绿色消息应显示“ sshd和ssh-agent服务已成功安装 ”);

5、为服务器生成SSH密钥(需要启动sshd服务):
ssh-keygen.exe –Assh-keygen: generating new host keys: RSA DSA ECDSA ED25519

 6、为SSHD服务启用自动启动,然后使用以下PowerShell服务管理命令启动它:
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
 
 
 
 
 
 
9、在任何文本编辑器中打开SSHD配置文件(C:\ ProgramData \ SSH \ sshd_config)。查找并检查Subsystem sftp指令的值SFTP-SERVER.EXE文件应在此处指定。
 
 
posted @ 2019-10-21 09:41  kamigao  阅读(7973)  评论(0编辑  收藏  举报