用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

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
OpenSSH SFTP是一种安全的文件传输协议,它使用SSH(Secure Shell)协议进行加密和验证。通过OpenSSH SFTP,用户可以通过网络安全地传输文件。 要在Windows上安装OpenSSH SFTP服务器,可以按照以下步骤进行操作: 1. 下载和安装WinSCP软件。WinSCP是一个免费的SFTPFTP客户端,它还包含了一个可选的OpenSSH服务器组件。 2. 打开命令提示符(以管理员身份运行)并运行以下命令来启动OpenSSH服务器: ``` net start sshd ``` 这将自动在`%programdata%\ssh`目录下生成主机密钥,如果密钥不存在的话。 3. 找到OpenSSH服务器配置文件`sshd_config`,它位于`C:\ProgramData\ssh`目录下,可能是隐藏的。在该配置文件的末尾添加以下内容: ``` # 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命令,并将用户`ftpuser`限制在`E:\sites\sftp`目录中。此外,它还禁用了隧道、身份验证代理、TCP和X11转发。 4. 使用SFTP客户端验证OpenSSH SFTP服务器的功能。可以使用WinSCP等客户端软件连接到服务器,并使用FTP用户凭据进行身份验证,以及进行安全的文件传输操作。 通过按照上述步骤进行操作,您可以在Windows上安装和配置OpenSSH SFTP服务器,并使用SFTP客户端进行文件传输。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [用OpenSSH 配置 SFTP 服务器 (OpenSSH for Windows)](https://blog.csdn.net/ericwuhk/article/details/108450629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值