用OpenSSH 配置 SFTP 服务器 (OpenSSH for Windows)
前言
通过IIS配置了FTP服务器,无法满足公司IT的安全性要求,按理说FTP+SSL证书也是安全的,但是IT要求只能用SFTP,无力反抗则第一时间查csdn和github.于是乎找到了openSSH这一神器.其实win10 18H1之后和Windows Server 2019 是自带安装功能,这部分不再细说. 可参考微软官网
适用于 Windows 的 OpenSSH 概述 | Microsoft Learn
Installing SFTP/SSH Server on Windows using OpenSSH :: WinSCP
无奈手头这台服务器是Windows Server 2012,以64bit为例,所以只能手动按部就班进行安装,安装步骤记录如下:
网上的资源从来只说一半,花点时间整理一篇完整版,希望对各位有用。
第一步:github网站下载压缩包
https://github.com/PowerShell/Win32-OpenSSH/releases
以64为系统为例,选择OpenSSH-Win64.zip链接下载即可.如果没有github账户(我担心那一天被封了,论及时备份的重要性),也可到我的资源里面进行下载。https://download.csdn.net/download/ericwuhk/12821190
第二步:将压缩包解压至C:\Program Files\OpenSSH-Win64,并在此目录下执行cmd指令
1#控制台调用powershell->In an elevated Powershell console, run the following
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
2#防火墙开端口22->Open the firewall for sshd.exe to allow inbound SSH connections
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
Note: New-NetFirewallRule is for Windows 2012 and above servers only. If you're on a client desktop machine (like Windows 10) or Windows 2008 R2 and below, try:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
3#启动sshd-> Start sshd (this will automatically generate host keys under %programdata%\ssh if they don't already exist)
net start sshd
4#若要卸载则执行
cd 'C:\Program Files\OpenSSH'
powershell.exe -ExecutionPolicy Bypass -File uninstall-sshd.ps1
运行过程大致截图如下:
第三步 建立ftp账户和密码
我的电脑右键管理-》电脑管理
第四步 配置ftp目录
找到配置文件C:\ProgramData\ssh\sshd_config 系统可能会隐藏 ,结尾加上分割线以下这一段
#=============================================
#Add Below
ForceCommand internal-sftp
Match User ftpuser
ChrootDirectory E:\sites\sftp
# Disable tunneling, authentication agent, TCP and X11 forwarding.
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
PermitTTY no
第五步 使用客户端验证
至此是SFTP已经配置完毕.用FileZilla client在本地机器上(192.168.0.2)运行检测发觉功能正常.
至此,大功告成?你想多了,我的工作才刚刚开始。接下来要写一份ftp客户端又选择性的从服务器上down而文件下来。
不过幸好已经有案底,会参考以下来进行修改,养成时常记录整理的好习惯,码到用时方恨少!
用于同步服务器文件的一款FTPS 客户端工具开发_ftp文件同步工具_Antony_WU_SZ的博客-CSDN博客
好了,合上笔记本下班回家!
后续问题:
可以把Start sshd加到开机启动项中,不然服务器每次重启之后需要手动执行net start sshd
在服务器中 Win+R 输入 gpedit.msc
Start sshd as admin.bat 如下:
@echo off
:: BatchGotAdmin
:-------------------------------------
REM --> Check for permissions
IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)
REM --> If error flag set, we do not have admin.
if '%errorlevel%' NEQ '0' (
echo Requesting administrative privileges...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
set params = %*:"=""
echo UAC.ShellExecute "cmd.exe", "/c ""%~0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
exit /B
:gotAdmin
pushd "%CD%"
CD /D "%~dp0"
:--------------------------------------
net start sshd
如果使用putty进行远程登录时,需要注意修改以下配置,否则远程功能可能收到影响
使用putty建立隧道进行远程访问目标机_putty ssh隧道_Antony_WU_SZ的博客-CSDN博客
#ForceCommand internal-sftp
AllowTcpForwarding yes